componentes-sinco 1.0.6 → 1.0.8

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
@@ -61,6 +61,7 @@ var src_exports = {};
61
61
  __export(src_exports, {
62
62
  ADCSincoTheme: () => ADCSincoTheme,
63
63
  AdproSincoTheme: () => AdproSincoTheme,
64
+ Calendar: () => Calendar,
64
65
  EmptyState: () => EmptyState,
65
66
  FooterAction: () => FooterAction,
66
67
  MultiSelect: () => MultiSelect,
@@ -78,6 +79,7 @@ __export(src_exports, {
78
79
  SCTabs: () => SCTabs,
79
80
  SCTextArea: () => SCTextArea,
80
81
  SCTextField: () => SCTextField,
82
+ SCTime: () => SCTime,
81
83
  SCToastNotification: () => SCToastNotification,
82
84
  SincoTheme: () => SincoTheme,
83
85
  ToastProgress: () => ToastProgress,
@@ -95,10 +97,12 @@ __export(src_exports, {
95
97
  module.exports = __toCommonJS(src_exports);
96
98
 
97
99
  // src/Components/Drawer/SCDrawer.tsx
98
- var import_react8 = __toESM(require("react"), 1);
100
+ var import_react9 = __toESM(require("react"), 1);
99
101
  var import_material7 = require("@mui/material");
100
102
  var import_Grid23 = __toESM(require("@mui/material/Grid2"), 1);
101
103
  var import_Close = __toESM(require("@mui/icons-material/Close"), 1);
104
+ var import_ArrowBackIos = __toESM(require("@mui/icons-material/ArrowBackIos"), 1);
105
+ var import_ArrowForwardIos = __toESM(require("@mui/icons-material/ArrowForwardIos"), 1);
102
106
 
103
107
  // src/Components/Textfield/SCTextField.tsx
104
108
  var import_react = __toESM(require("react"), 1);
@@ -732,11 +736,9 @@ function SCSelect({
732
736
  width = "100%",
733
737
  size = "small",
734
738
  variant = "outlined",
735
- deleteType = "button",
739
+ background = "white",
736
740
  required,
737
741
  disabled,
738
- background,
739
- fnAplicar,
740
742
  setState,
741
743
  state
742
744
  }) {
@@ -811,14 +813,20 @@ function SCSelect({
811
813
  MenuProps: {
812
814
  PaperProps: {
813
815
  sx: {
814
- left: "0px !important"
816
+ maxHeight: "300px",
817
+ minWidth: "100%"
815
818
  }
816
819
  },
817
- sx: {
818
- "& .MuiPaper-root": {
819
- left: "0px !important"
820
- }
821
- }
820
+ anchorOrigin: {
821
+ vertical: "bottom",
822
+ horizontal: "left"
823
+ },
824
+ transformOrigin: {
825
+ vertical: "top",
826
+ horizontal: "left"
827
+ },
828
+ disableAutoFocusItem: true,
829
+ marginThreshold: 0
822
830
  }
823
831
  },
824
832
  data.map((option, index) => {
@@ -850,7 +858,6 @@ function SCAutocomplete({
850
858
  state,
851
859
  inputChange,
852
860
  maxCheck
853
- // Agregar el parámetro maxCheck
854
861
  }) {
855
862
  const labelContent = `<span style="color: red;">* </span>` + label;
856
863
  let group = "";
@@ -944,6 +951,7 @@ function SCAutocomplete({
944
951
  {
945
952
  multiple: typeFormat === "multiselect",
946
953
  clearOnEscape: true,
954
+ noOptionsText: "No se encuentra",
947
955
  disabled,
948
956
  options: data,
949
957
  isOptionEqualToValue: (option, value) => getItemValue(option).value === getItemValue(value).value,
@@ -1187,31 +1195,83 @@ var getIcon2 = (iconName) => {
1187
1195
  };
1188
1196
 
1189
1197
  // src/Components/Drawer/Helpers/validateInput.tsx
1190
- var validateInputs = (arrayElements, onError, onSuccess) => {
1191
- var _a;
1198
+ var validateInputs = (arrayElements, onError, onSuccess, setChipFilters, setTextFilters) => {
1199
+ var _a, _b;
1192
1200
  let requiredValues = 0;
1193
1201
  let filledValues = 0;
1194
1202
  for (let i = 0; i < arrayElements.length; i++) {
1195
- if (arrayElements[i].component === void 0) {
1196
- if (arrayElements[i].required) {
1197
- requiredValues++;
1198
- }
1199
- if (arrayElements[i].required && ((_a = arrayElements[i].state) == null ? void 0 : _a.trim()) !== "") {
1203
+ const element = arrayElements[i];
1204
+ const { validation, element: typeElement } = validateTypeElements(element);
1205
+ const textValue = ((_a = typeElement.state) == null ? void 0 : _a.textValue) !== void 0 ? String((_b = typeElement.state) == null ? void 0 : _b.textValue) : String(typeElement.state);
1206
+ if (typeElement == null ? void 0 : typeElement.required) {
1207
+ requiredValues++;
1208
+ if (textValue.trim() !== "" && textValue.trim() !== ",") {
1200
1209
  filledValues++;
1201
1210
  }
1202
1211
  }
1203
1212
  }
1204
1213
  if (requiredValues === filledValues) {
1205
1214
  onSuccess();
1215
+ setChipFilters(true);
1206
1216
  } else {
1207
1217
  onError({
1208
1218
  type: "error",
1209
1219
  title: "Algunos campos son requeridos",
1210
1220
  time: 10
1211
1221
  });
1222
+ setChipFilters(false);
1212
1223
  }
1213
1224
  };
1214
1225
 
1226
+ // src/Components/Drawer/Helpers/validateTypeElement.tsx
1227
+ var import_react8 = __toESM(require("react"), 1);
1228
+ var validateTypeElements = (element) => {
1229
+ var _a;
1230
+ let validation = "";
1231
+ let typeElement = element;
1232
+ if (element.type == "textField") {
1233
+ validation = "textField";
1234
+ typeElement = element;
1235
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name == "SCtextField") {
1236
+ validation = "textField";
1237
+ typeElement = element == null ? void 0 : element.component.props;
1238
+ } else if (element.type == "textArea") {
1239
+ validation = "textArea";
1240
+ typeElement = element;
1241
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name == "SCtextArea") {
1242
+ validation = "textArea";
1243
+ typeElement = element == null ? void 0 : element.component.props;
1244
+ } else if (element.type == "dateRange") {
1245
+ validation = "dateRange";
1246
+ typeElement = element;
1247
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name == "SCDateRange") {
1248
+ validation = "dateRange";
1249
+ typeElement = element == null ? void 0 : element.component.props;
1250
+ } else if (element.type == "autocomplete") {
1251
+ validation = "autocomplete";
1252
+ typeElement = element;
1253
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name == "SCAutocomplete") {
1254
+ validation = "autocomplete";
1255
+ typeElement = element == null ? void 0 : element.component.props;
1256
+ } else if (element.typeFormat == "multiselect") {
1257
+ validation = "multiselect";
1258
+ typeElement = element;
1259
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.props && ((_a = element == null ? void 0 : element.component) == null ? void 0 : _a.props).typeFormat == "multiselect") {
1260
+ validation = "multiselect";
1261
+ typeElement = element == null ? void 0 : element.component.props;
1262
+ } else if (element.type == "select") {
1263
+ validation = "select";
1264
+ typeElement = element;
1265
+ } else if (import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name == "SCSelect") {
1266
+ validation = "select";
1267
+ typeElement = element == null ? void 0 : element.component.props;
1268
+ }
1269
+ return {
1270
+ validation,
1271
+ element: typeElement
1272
+ };
1273
+ };
1274
+
1215
1275
  // src/Components/Drawer/SCDrawer.tsx
1216
1276
  function SCDrawer({
1217
1277
  //informativas
@@ -1224,16 +1284,42 @@ function SCDrawer({
1224
1284
  anchor = "left",
1225
1285
  width,
1226
1286
  //Funcionales
1227
- open
1287
+ open,
1288
+ setOpen,
1289
+ chipFilters
1228
1290
  }) {
1229
1291
  var _a, _b;
1230
- const [drawerOpen, setDrawerOpen] = import_react8.default.useState(open);
1231
- const [toast, setToast] = import_react8.default.useState(null);
1292
+ const scrollRef = (0, import_react9.useRef)(null);
1293
+ const [drawerOpen, setDrawerOpen] = import_react9.default.useState(open);
1294
+ const [toast, setToast] = import_react9.default.useState(null);
1295
+ const [stateChipFilters, setChipFilters] = import_react9.default.useState(false);
1296
+ const [textFilters, setTextFilters] = import_react9.default.useState([]);
1297
+ (0, import_react9.useEffect)(() => {
1298
+ if (chipFilters != void 0) {
1299
+ if (chipFilters.length > 0) {
1300
+ setTextFilters([]);
1301
+ inputValidation();
1302
+ }
1303
+ }
1304
+ }, [chipFilters]);
1305
+ (0, import_react9.useEffect)(() => {
1306
+ if (open) {
1307
+ toggleDrawer(true);
1308
+ } else {
1309
+ handleDrawerClose();
1310
+ }
1311
+ }, [open]);
1232
1312
  const handleDrawerClose = () => {
1233
1313
  setDrawerOpen(false);
1314
+ if (setOpen) {
1315
+ setOpen(false);
1316
+ }
1234
1317
  };
1235
1318
  const toggleDrawer = (newOpen) => () => {
1236
1319
  setDrawerOpen(newOpen);
1320
+ if (setOpen) {
1321
+ setOpen(true);
1322
+ }
1237
1323
  };
1238
1324
  const ButtonIcon = getIcon2(buttonDrawer == null ? void 0 : buttonDrawer.icon);
1239
1325
  const setToastWithDelay = (toastContent) => {
@@ -1242,39 +1328,179 @@ function SCDrawer({
1242
1328
  setToast(toastContent);
1243
1329
  }, 10);
1244
1330
  };
1245
- const inputValidation = () => validateInputs(arrayElements, setToastWithDelay, handleDrawerClose);
1246
- const clean = () => {
1247
- arrayElements.forEach((element, index) => {
1248
- var _a2, _b2, _c, _d, _e, _f, _g, _h;
1249
- if (element.setState || import_react8.default.isValidElement(element == null ? void 0 : element.component) && ((_a2 = element.component.props) == null ? void 0 : _a2.setState)) {
1250
- if (element.type === "textField" || import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name === "SCtextField" || (element.type === "textArea" || import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name === "SCtextArea")) {
1251
- element.setState != void 0 ? element.setState("") : null;
1252
- import_react8.default.isValidElement(element == null ? void 0 : element.component) && ((_b2 = element.component.props) == null ? void 0 : _b2.setState) && ((_d = (_c = element == null ? void 0 : element.component) == null ? void 0 : _c.props) == null ? void 0 : _d.setState(""));
1253
- } else if (element.type === "dateRange" || import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name === "SCDateRange") {
1254
- element.setState != void 0 ? element.setState([null, null]) : null;
1255
- import_react8.default.isValidElement(element == null ? void 0 : element.component) && typeof ((_e = element.component.props) == null ? void 0 : _e.setState) === "function" && element.component.props.setState([null, null]);
1256
- } else {
1257
- if (element.type == "autocomplete" || import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.type && element.component.type.name === "SCAutocomplete" || (element.typeFormat == "multiselect" || import_react8.default.isValidElement(element == null ? void 0 : element.component) && element.component.props && ((_f = element == null ? void 0 : element.component) == null ? void 0 : _f.props).typeFormat == "multiselect")) {
1258
- element.setState != void 0 ? element.setState({ hiddenValue: [], textValue: [] }) : null;
1259
- import_react8.default.isValidElement(element == null ? void 0 : element.component) && typeof ((_g = element.component.props) == null ? void 0 : _g.setState) === "function" && element.component.props.setState({ hiddenValue: [], textValue: [] });
1331
+ const inputValidation = () => {
1332
+ var _a2, _b2, _c, _d;
1333
+ if (chipFilters != void 0 && chipFilters.length > 0) {
1334
+ if (chipFilters && chipFilters.length > 0) {
1335
+ arrayElements.forEach((arrayElement) => {
1336
+ var _a3, _b3, _c2;
1337
+ const { validation, element: typeElement } = validateTypeElements(arrayElement);
1338
+ let currentValue = "";
1339
+ if (validation === "dateRange") {
1340
+ if (typeElement.state && typeElement.state[0] && typeElement.state[1]) {
1341
+ currentValue = `${(_a3 = typeElement.state[0]) == null ? void 0 : _a3.format("DD/MM/YYYY")} - ${(_b3 = typeElement.state[1]) == null ? void 0 : _b3.format("DD/MM/YYYY")}`;
1342
+ }
1260
1343
  } else {
1261
- element.setState != void 0 ? element.setState({ hiddenValue: "-1", textValue: "" }) : null;
1262
- import_react8.default.isValidElement(element == null ? void 0 : element.component) && typeof ((_h = element.component.props) == null ? void 0 : _h.setState) === "function" && element.component.props.setState({ hiddenValue: "-1", textValue: "" });
1344
+ currentValue = ((_c2 = typeElement.state) == null ? void 0 : _c2.textValue) !== void 0 ? String(typeElement.state.textValue).trim() : String(typeElement.state).trim();
1345
+ }
1346
+ chipFilters.forEach((chipFilter) => {
1347
+ const chipValue = String(chipFilter).trim();
1348
+ if (currentValue === chipValue && currentValue !== "" && currentValue !== ",") {
1349
+ setTextFilters((prevFilters) => {
1350
+ const newFilter = { value: currentValue, arrayElement: typeElement };
1351
+ const existingFilterIndex = prevFilters.findIndex(
1352
+ (filter) => filter.arrayElement.label === arrayElement.label
1353
+ );
1354
+ if (existingFilterIndex !== -1) {
1355
+ const updatedFilters = [...prevFilters];
1356
+ updatedFilters[existingFilterIndex] = newFilter;
1357
+ return updatedFilters;
1358
+ } else {
1359
+ return [...prevFilters, newFilter];
1360
+ }
1361
+ });
1362
+ }
1363
+ });
1364
+ });
1365
+ }
1366
+ } else {
1367
+ const newFiltersToAdd = [];
1368
+ for (let i = 0; i < arrayElements.length; i++) {
1369
+ const element = arrayElements[i];
1370
+ const { validation, element: typeElement } = validateTypeElements(element);
1371
+ const textValue = ((_a2 = typeElement.state) == null ? void 0 : _a2.textValue) !== void 0 ? String((_b2 = typeElement.state) == null ? void 0 : _b2.textValue) : String(typeElement.state);
1372
+ if (textValue.trim() !== "" && textValue.trim() !== ",") {
1373
+ let newFilter;
1374
+ switch (validation) {
1375
+ case "dateRange":
1376
+ const values = `${(_c = typeElement.state[0]) == null ? void 0 : _c.format("DD/MM/YYYY")} - ${(_d = typeElement.state[1]) == null ? void 0 : _d.format("DD/MM/YYYY")}`;
1377
+ newFilter = { value: values, arrayElement: typeElement };
1378
+ break;
1379
+ default:
1380
+ newFilter = { value: textValue, arrayElement: typeElement };
1381
+ break;
1382
+ }
1383
+ const existingFilterByLabel = newFiltersToAdd.find(
1384
+ (filter) => filter.arrayElement.label === element.label
1385
+ );
1386
+ if (existingFilterByLabel) {
1387
+ existingFilterByLabel.value = newFilter.value;
1388
+ existingFilterByLabel.arrayElement = newFilter.arrayElement;
1389
+ } else {
1390
+ newFiltersToAdd.push(newFilter);
1263
1391
  }
1264
1392
  }
1265
1393
  }
1394
+ setTextFilters((prevFilters) => {
1395
+ let updatedFilters = [...prevFilters];
1396
+ newFiltersToAdd.forEach((newFilter) => {
1397
+ const existingFilterIndex = updatedFilters.findIndex(
1398
+ (filter) => filter.arrayElement.label === newFilter.arrayElement.label
1399
+ );
1400
+ if (existingFilterIndex !== -1) {
1401
+ updatedFilters[existingFilterIndex] = newFilter;
1402
+ } else {
1403
+ updatedFilters.push(newFilter);
1404
+ }
1405
+ });
1406
+ return updatedFilters;
1407
+ });
1408
+ validateInputs(arrayElements, setToastWithDelay, handleDrawerClose, setChipFilters, setTextFilters);
1409
+ }
1410
+ };
1411
+ const resetElementByType = (originalElement, validation, typeElement) => {
1412
+ let defaultValue;
1413
+ switch (validation) {
1414
+ case "textField":
1415
+ case "textArea":
1416
+ defaultValue = "";
1417
+ break;
1418
+ case "dateRange":
1419
+ defaultValue = [null, null];
1420
+ break;
1421
+ case "multiselect":
1422
+ defaultValue = { hiddenValue: [], textValue: [] };
1423
+ break;
1424
+ default:
1425
+ defaultValue = { hiddenValue: "-1", textValue: "" };
1426
+ }
1427
+ if (typeElement.setState) {
1428
+ typeElement.setState(defaultValue);
1429
+ }
1430
+ };
1431
+ const cleanFilters = () => {
1432
+ arrayElements.forEach((element) => {
1433
+ const { validation, element: typeElement } = validateTypeElements(element);
1434
+ if (typeElement.setState) {
1435
+ resetElementByType(element, validation, typeElement);
1436
+ }
1266
1437
  });
1438
+ setTextFilters([]);
1439
+ };
1440
+ const deleteFilter = (element) => {
1441
+ const { validation, element: typeElement } = validateTypeElements(element);
1442
+ if (typeElement.setState && shouldShowChips == true) {
1443
+ resetElementByType(element, validation, typeElement);
1444
+ setTextFilters(
1445
+ (prevFilters) => prevFilters.filter((filter) => filter.arrayElement.label !== element.label)
1446
+ );
1447
+ }
1448
+ };
1449
+ const scroll = (offset) => {
1450
+ if (scrollRef.current) {
1451
+ scrollRef.current.scrollLeft += offset;
1452
+ }
1267
1453
  };
1268
- const actionsA = actions == false ? false : actions != void 0 ? actions : [{ text: "Aplicar filtros", fn: inputValidation }, { text: "Limpiar filtros", fn: clean }];
1269
- return /* @__PURE__ */ import_react8.default.createElement(import_react8.default.Fragment, null, toast && /* @__PURE__ */ import_react8.default.createElement(SCToastNotification, __spreadValues({}, toast)), (buttonDrawer == null ? void 0 : buttonDrawer.type) == "chip" ? /* @__PURE__ */ import_react8.default.createElement(
1454
+ const hasActiveFilters = () => {
1455
+ return arrayElements.some((arrayElement) => {
1456
+ const { validation, element: typeElement } = validateTypeElements(arrayElement);
1457
+ if (typeElement.state.textValue !== void 0) {
1458
+ return String(typeElement.state.textValue).trim() !== "";
1459
+ } else if (validation === "dateRange") {
1460
+ return typeElement.state && typeElement.state[0] !== null && typeElement.state[1] !== null;
1461
+ } else {
1462
+ return String(typeElement.state).trim() !== "" && String(typeElement.state).trim() !== ",";
1463
+ }
1464
+ });
1465
+ };
1466
+ const shouldShowChips = chipFilters != void 0 && chipFilters.length > 0 ? true : stateChipFilters === true && hasActiveFilters();
1467
+ const actionsA = actions == false ? false : actions != void 0 ? actions : [{ text: "Aplicar filtros", fn: inputValidation }, { text: "Limpiar filtros", fn: cleanFilters }];
1468
+ return /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, toast && /* @__PURE__ */ import_react9.default.createElement(SCToastNotification, __spreadValues({}, toast)), /* @__PURE__ */ import_react9.default.createElement(import_Grid23.default, { container: true, justifyContent: "flex-start", flexWrap: "nowrap", alignItems: "center", sx: { width: "100%" } }, shouldShowChips && /* @__PURE__ */ import_react9.default.createElement(import_material7.Box, { display: "flex", alignItems: "center", sx: { maxWidth: "78%" } }, /* @__PURE__ */ import_react9.default.createElement(import_material7.IconButton, { onClick: () => scroll(-150), size: "small" }, /* @__PURE__ */ import_react9.default.createElement(import_ArrowBackIos.default, { fontSize: "small" })), /* @__PURE__ */ import_react9.default.createElement(
1469
+ import_material7.Box,
1470
+ {
1471
+ ref: scrollRef,
1472
+ gap: 0.3,
1473
+ sx: {
1474
+ display: "flex",
1475
+ overflowX: "auto",
1476
+ scrollBehavior: "smooth",
1477
+ "&::-webkit-scrollbar": { display: "none" }
1478
+ }
1479
+ },
1480
+ textFilters == null ? void 0 : textFilters.map((chipData, index) => /* @__PURE__ */ import_react9.default.createElement(
1481
+ import_material7.Chip,
1482
+ __spreadProps(__spreadValues({
1483
+ key: index,
1484
+ label: chipData.value
1485
+ }, chipData.arrayElement.required == false || chipData.arrayElement.required == void 0 ? { onDelete: () => deleteFilter(chipData.arrayElement) } : {}), {
1486
+ color: "default",
1487
+ variant: "filled",
1488
+ size: "small",
1489
+ sx: {
1490
+ flexShrink: 0,
1491
+ minWidth: "auto"
1492
+ }
1493
+ })
1494
+ ))
1495
+ ), /* @__PURE__ */ import_react9.default.createElement(import_material7.IconButton, { onClick: () => scroll(150), size: "small" }, /* @__PURE__ */ import_react9.default.createElement(import_ArrowForwardIos.default, { fontSize: "small" }))), (buttonDrawer == null ? void 0 : buttonDrawer.type) == "chip" ? /* @__PURE__ */ import_react9.default.createElement(
1270
1496
  import_material7.Chip,
1271
1497
  __spreadProps(__spreadValues({
1272
1498
  onClick: toggleDrawer(true),
1273
1499
  color: buttonDrawer == null ? void 0 : buttonDrawer.color,
1274
1500
  variant: (buttonDrawer == null ? void 0 : buttonDrawer.variant) == "contained" ? "filled" : "outlined",
1275
1501
  label: (_a = buttonDrawer == null ? void 0 : buttonDrawer.text) != null ? _a : "",
1276
- icon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "left" && ButtonIcon ? /* @__PURE__ */ import_react8.default.createElement(ButtonIcon, { fontSize: "small" }) : void 0,
1277
- deleteIcon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "right" && ButtonIcon ? /* @__PURE__ */ import_react8.default.createElement(ButtonIcon, { fontSize: "small" }) : void 0
1502
+ icon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "left" && ButtonIcon ? /* @__PURE__ */ import_react9.default.createElement(ButtonIcon, { fontSize: "small" }) : void 0,
1503
+ deleteIcon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "right" && ButtonIcon ? /* @__PURE__ */ import_react9.default.createElement(ButtonIcon, { fontSize: "small" }) : void 0
1278
1504
  }, (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "right" && ButtonIcon ? { onDelete: () => {
1279
1505
  } } : {}), {
1280
1506
  sx: {
@@ -1284,7 +1510,7 @@ function SCDrawer({
1284
1510
  textTransform: "capitalize"
1285
1511
  }
1286
1512
  })
1287
- ) : /* @__PURE__ */ import_react8.default.createElement(
1513
+ ) : /* @__PURE__ */ import_react9.default.createElement(
1288
1514
  import_material7.Button,
1289
1515
  {
1290
1516
  "data-testid": "test-buttonDrawer",
@@ -1293,11 +1519,11 @@ function SCDrawer({
1293
1519
  onClick: toggleDrawer(true),
1294
1520
  size: "small",
1295
1521
  variant: (buttonDrawer == null ? void 0 : buttonDrawer.variant) != void 0 ? buttonDrawer == null ? void 0 : buttonDrawer.variant : "text",
1296
- startIcon: ((buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "left" || !(buttonDrawer == null ? void 0 : buttonDrawer.iconPosition)) && ButtonIcon ? /* @__PURE__ */ import_react8.default.createElement(ButtonIcon, { fontSize: "small" }) : null,
1297
- endIcon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "right" && ButtonIcon ? /* @__PURE__ */ import_react8.default.createElement(ButtonIcon, { fontSize: "small" }) : null
1522
+ startIcon: ((buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "left" || !(buttonDrawer == null ? void 0 : buttonDrawer.iconPosition)) && ButtonIcon ? /* @__PURE__ */ import_react9.default.createElement(ButtonIcon, { fontSize: "small" }) : null,
1523
+ endIcon: (buttonDrawer == null ? void 0 : buttonDrawer.iconPosition) === "right" && ButtonIcon ? /* @__PURE__ */ import_react9.default.createElement(ButtonIcon, { fontSize: "small" }) : null
1298
1524
  },
1299
1525
  (_b = buttonDrawer == null ? void 0 : buttonDrawer.text) != null ? _b : ""
1300
- ), /* @__PURE__ */ import_react8.default.createElement(
1526
+ )), /* @__PURE__ */ import_react9.default.createElement(
1301
1527
  import_material7.Drawer,
1302
1528
  {
1303
1529
  open: drawerOpen,
@@ -1311,15 +1537,15 @@ function SCDrawer({
1311
1537
  }
1312
1538
  }
1313
1539
  },
1314
- /* @__PURE__ */ import_react8.default.createElement(import_material7.Stack, { flexDirection: "column", height: "100%" }, /* @__PURE__ */ import_react8.default.createElement(import_Grid23.default, { container: true, sx: { backgroundColor: "primary.50", alignItems: "center", height: "42px", textAlign: "left", padding: "8px 12px", justifyContent: "space-between", alignContent: "center" } }, /* @__PURE__ */ import_react8.default.createElement(import_material7.Typography, { variant: "h6", color: colorTitle || "text.primary" }, title != null ? title : "Personaliza tu b\xFAsqueda"), /* @__PURE__ */ import_react8.default.createElement(import_material7.IconButton, { onClick: handleDrawerClose }, /* @__PURE__ */ import_react8.default.createElement(import_Close.default, { "data-testid": "test-button-close", sx: { color: "text.primary" } }))), /* @__PURE__ */ import_react8.default.createElement(import_material7.Stack, { alignItems: "flex-start", height: "100%", gap: "16px", flex: 1, overflow: "auto", padding: "16px" }, arrayElements == null ? void 0 : arrayElements.map((arrayElement, index) => {
1540
+ /* @__PURE__ */ import_react9.default.createElement(import_material7.Stack, { flexDirection: "column", height: "100%" }, /* @__PURE__ */ import_react9.default.createElement(import_Grid23.default, { container: true, sx: { backgroundColor: "primary.50", alignItems: "center", height: "42px", textAlign: "left", padding: "8px 12px", justifyContent: "space-between", alignContent: "center" } }, /* @__PURE__ */ import_react9.default.createElement(import_material7.Typography, { variant: "h6", color: colorTitle || "text.primary" }, title != null ? title : "Personaliza tu b\xFAsqueda"), /* @__PURE__ */ import_react9.default.createElement(import_material7.IconButton, { onClick: handleDrawerClose }, /* @__PURE__ */ import_react9.default.createElement(import_Close.default, { "data-testid": "test-button-close", sx: { color: "text.primary" } }))), /* @__PURE__ */ import_react9.default.createElement(import_material7.Stack, { alignItems: "flex-start", height: "100%", gap: "16px", flex: 1, overflow: "auto", padding: "16px" }, arrayElements == null ? void 0 : arrayElements.map((arrayElement, index) => {
1315
1541
  var _a2, _b2, _c, _d, _e, _f;
1316
- return /* @__PURE__ */ import_react8.default.createElement(
1542
+ return /* @__PURE__ */ import_react9.default.createElement(
1317
1543
  import_material7.Box,
1318
1544
  {
1319
1545
  key: `Stack_${(_a2 = arrayElement.type) != null ? _a2 : ""} ${(_b2 = arrayElement.label) != null ? _b2 : ""}${index}`,
1320
1546
  sx: { width: "100%" }
1321
1547
  },
1322
- arrayElement.component ? /* @__PURE__ */ import_react8.default.createElement(import_material7.Stack, { direction: "row", alignItems: "left", gap: 1 }, arrayElement.component) : arrayElement.type === "textField" ? /* @__PURE__ */ import_react8.default.createElement(
1548
+ arrayElement.component ? /* @__PURE__ */ import_react9.default.createElement(import_material7.Stack, { direction: "row", alignItems: "left", gap: 1 }, arrayElement.component) : arrayElement.type === "textField" ? /* @__PURE__ */ import_react9.default.createElement(
1323
1549
  SCTextField,
1324
1550
  {
1325
1551
  title: arrayElement.title,
@@ -1345,7 +1571,7 @@ function SCDrawer({
1345
1571
  onBlur: arrayElement.onBlur,
1346
1572
  onKeyDown: arrayElement.onKeyDown
1347
1573
  }
1348
- ) : arrayElement.type === "textArea" ? /* @__PURE__ */ import_react8.default.createElement(
1574
+ ) : arrayElement.type === "textArea" ? /* @__PURE__ */ import_react9.default.createElement(
1349
1575
  SCTextArea,
1350
1576
  {
1351
1577
  title: arrayElement.title,
@@ -1364,7 +1590,7 @@ function SCDrawer({
1364
1590
  state: arrayElement.state || "",
1365
1591
  onBlur: arrayElement.onBlur
1366
1592
  }
1367
- ) : arrayElement.type === "autocomplete" ? /* @__PURE__ */ import_react8.default.createElement(
1593
+ ) : arrayElement.type === "autocomplete" ? /* @__PURE__ */ import_react9.default.createElement(
1368
1594
  SCAutocomplete,
1369
1595
  {
1370
1596
  label: arrayElement.label,
@@ -1382,7 +1608,7 @@ function SCDrawer({
1382
1608
  state: arrayElement.state || "",
1383
1609
  inputChange: arrayElement.inputChange
1384
1610
  }
1385
- ) : arrayElement.type === "select" ? /* @__PURE__ */ import_react8.default.createElement(
1611
+ ) : arrayElement.type === "select" ? /* @__PURE__ */ import_react9.default.createElement(
1386
1612
  SCSelect,
1387
1613
  {
1388
1614
  label: arrayElement.label,
@@ -1391,7 +1617,6 @@ function SCDrawer({
1391
1617
  width: arrayElement.width,
1392
1618
  size: arrayElement.size,
1393
1619
  variant: arrayElement.variant,
1394
- deleteType: arrayElement.deleteType,
1395
1620
  required: arrayElement.required,
1396
1621
  disabled: arrayElement.disabled,
1397
1622
  background: arrayElement.background,
@@ -1399,7 +1624,7 @@ function SCDrawer({
1399
1624
  setState: arrayElement.setState,
1400
1625
  state: arrayElement.state || ""
1401
1626
  }
1402
- ) : arrayElement.type === "dateRange" ? /* @__PURE__ */ import_react8.default.createElement(
1627
+ ) : arrayElement.type === "dateRange" ? /* @__PURE__ */ import_react9.default.createElement(
1403
1628
  SCDateRange,
1404
1629
  {
1405
1630
  labelDateInitial: arrayElement.labelDateInitial,
@@ -1412,7 +1637,7 @@ function SCDrawer({
1412
1637
  }
1413
1638
  ) : null
1414
1639
  );
1415
- })), actionsA != void 0 && actionsA != false ? Array.isArray(actionsA) && (actionsA == null ? void 0 : actionsA.length) > 0 ? /* @__PURE__ */ import_react8.default.createElement(
1640
+ })), actionsA != void 0 && actionsA != false ? Array.isArray(actionsA) && (actionsA == null ? void 0 : actionsA.length) > 0 ? /* @__PURE__ */ import_react9.default.createElement(
1416
1641
  import_Grid23.default,
1417
1642
  {
1418
1643
  sx: { borderTop: 1, borderColor: "#1018403B" },
@@ -1424,7 +1649,7 @@ function SCDrawer({
1424
1649
  justifyContent: actionsA.length > 1 ? "space-between" : !anchor && anchor != "right" ? "flex-end" : "flex-start",
1425
1650
  flexDirection: anchor != "right" ? "row-reverse" : "row"
1426
1651
  },
1427
- actionsA.map((btn, index) => /* @__PURE__ */ import_react8.default.createElement(
1652
+ actionsA.map((btn, index) => /* @__PURE__ */ import_react9.default.createElement(
1428
1653
  import_material7.Button,
1429
1654
  {
1430
1655
  key: index,
@@ -1441,7 +1666,7 @@ function SCDrawer({
1441
1666
  }
1442
1667
 
1443
1668
  // src/Components/FooterAction/FooterAction.tsx
1444
- var import_react9 = __toESM(require("react"), 1);
1669
+ var import_react10 = __toESM(require("react"), 1);
1445
1670
  var import_material8 = require("@mui/material");
1446
1671
  var FooterAction = ({
1447
1672
  leftContent,
@@ -1449,44 +1674,44 @@ var FooterAction = ({
1449
1674
  label,
1450
1675
  variant
1451
1676
  }) => {
1452
- return /* @__PURE__ */ import_react9.default.createElement(
1677
+ return /* @__PURE__ */ import_react10.default.createElement(
1453
1678
  import_material8.AppBar,
1454
1679
  {
1455
1680
  color: "inherit",
1456
1681
  sx: { position: variant == "float" ? "relative" : "fixed", left: 0, right: "auto", width: "100%", top: "auto", bottom: 0 }
1457
1682
  },
1458
- /* @__PURE__ */ import_react9.default.createElement(
1683
+ /* @__PURE__ */ import_react10.default.createElement(
1459
1684
  import_material8.Toolbar,
1460
1685
  {
1461
1686
  id: "footer-toolbar",
1462
1687
  sx: { gap: 1.5, minHeight: "50px !important" }
1463
1688
  },
1464
1689
  leftContent,
1465
- /* @__PURE__ */ import_react9.default.createElement(import_material8.Box, { flexGrow: 1 }),
1466
- label && /* @__PURE__ */ import_react9.default.createElement(import_material8.Typography, { variant: "body2", color: "text.secondary" }, label),
1690
+ /* @__PURE__ */ import_react10.default.createElement(import_material8.Box, { flexGrow: 1 }),
1691
+ label && /* @__PURE__ */ import_react10.default.createElement(import_material8.Typography, { variant: "body2", color: "text.secondary" }, label),
1467
1692
  rightContent
1468
1693
  )
1469
1694
  );
1470
1695
  };
1471
1696
 
1472
1697
  // src/Components/Modal/Helpers/Data.tsx
1473
- var import_react10 = __toESM(require("react"), 1);
1698
+ var import_react11 = __toESM(require("react"), 1);
1474
1699
  var import_icons_material5 = require("@mui/icons-material");
1475
1700
  var modalStateConfig = {
1476
1701
  info: {
1477
1702
  color: "info",
1478
1703
  defaultDescription: "Se [sincronizar\xE1n] los datos trabajados en modo offline y se [subir\xE1n] a los servidores.",
1479
- icon: /* @__PURE__ */ import_react10.default.createElement(import_icons_material5.Info, { color: "info", fontSize: "medium" })
1704
+ icon: /* @__PURE__ */ import_react11.default.createElement(import_icons_material5.Info, { color: "info", fontSize: "medium" })
1480
1705
  },
1481
1706
  delete: {
1482
1707
  color: "delete",
1483
1708
  defaultDescription: "[Elemento espec\xEDfico] [dejar\xE1 de existir en todos los lugares donde est\xE9 en uso]. Esta acci\xF3n es irreversible.",
1484
- icon: /* @__PURE__ */ import_react10.default.createElement(import_icons_material5.Info, { color: "error", fontSize: "medium" })
1709
+ icon: /* @__PURE__ */ import_react11.default.createElement(import_icons_material5.Info, { color: "error", fontSize: "medium" })
1485
1710
  },
1486
1711
  warning: {
1487
1712
  color: "warning",
1488
1713
  defaultDescription: "Se descartar\xE1 la [creaci\xF3n] y los cambios se perder\xE1n.",
1489
- icon: /* @__PURE__ */ import_react10.default.createElement(import_icons_material5.Warning, { color: "warning", fontSize: "medium" })
1714
+ icon: /* @__PURE__ */ import_react11.default.createElement(import_icons_material5.Warning, { color: "warning", fontSize: "medium" })
1490
1715
  }
1491
1716
  };
1492
1717
 
@@ -1516,7 +1741,7 @@ var getButtonColor = (state) => {
1516
1741
  };
1517
1742
 
1518
1743
  // src/Components/Modal/SCModal.tsx
1519
- var import_react11 = __toESM(require("react"), 1);
1744
+ var import_react12 = __toESM(require("react"), 1);
1520
1745
  var import_material9 = require("@mui/material");
1521
1746
  var import_icons_material7 = require("@mui/icons-material");
1522
1747
 
@@ -1535,34 +1760,31 @@ var SCModal = ({
1535
1760
  action
1536
1761
  }) => {
1537
1762
  var _a, _b, _c, _d, _e;
1538
- const [openModal, setOpenModal] = (0, import_react11.useState)(open != null ? open : false);
1539
- (0, import_react11.useEffect)(() => {
1540
- if (open !== void 0) {
1541
- setOpenModal(open);
1542
- }
1543
- }, [open]);
1544
- const Icon = (0, import_react11.useMemo)(() => getIconComponent2(buttonModal == null ? void 0 : buttonModal.icon), [buttonModal == null ? void 0 : buttonModal.icon]);
1545
- const handleClose = (0, import_react11.useCallback)(() => setOpenModal(false), []);
1546
- const toggleModal = (newOpen) => () => setOpenModal(newOpen);
1547
- const prevAction = (0, import_react11.useMemo)(
1763
+ const [openModal, setOpenModal] = (0, import_react12.useState)(open != null ? open : false);
1764
+ const handleOpen = import_react12.default.useCallback(() => {
1765
+ setOpenModal((prev) => !prev);
1766
+ }, []);
1767
+ const Icon = (0, import_react12.useMemo)(() => getIconComponent2(buttonModal == null ? void 0 : buttonModal.icon), [buttonModal == null ? void 0 : buttonModal.icon]);
1768
+ const handleClose = (0, import_react12.useCallback)(() => setOpenModal(false), []);
1769
+ const prevAction = (0, import_react12.useMemo)(
1548
1770
  () => action != null ? action : [{ text: "Cancelar", fn: handleClose }, { text: "Consultar", fn: () => {
1549
1771
  } }],
1550
1772
  [action, handleClose]
1551
1773
  );
1552
1774
  const { icon, defaultDescription } = modalStateConfig[state];
1553
- return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
1775
+ return /* @__PURE__ */ import_react12.default.createElement(import_react12.default.Fragment, null, /* @__PURE__ */ import_react12.default.createElement(
1554
1776
  import_material9.Button,
1555
1777
  {
1556
1778
  "data-testid": "test-buttonModal",
1557
1779
  color: (_a = buttonModal == null ? void 0 : buttonModal.color) != null ? _a : "primary",
1558
- onClick: toggleModal(true),
1780
+ onClick: handleOpen,
1559
1781
  variant: (_b = buttonModal == null ? void 0 : buttonModal.variant) != null ? _b : "text",
1560
1782
  size: (_c = buttonModal == null ? void 0 : buttonModal.size) != null ? _c : "small",
1561
- startIcon: (buttonModal == null ? void 0 : buttonModal.iconPosition) === "left" && /* @__PURE__ */ import_react11.default.createElement(Icon, null),
1562
- endIcon: (buttonModal == null ? void 0 : buttonModal.iconPosition) === "right" && /* @__PURE__ */ import_react11.default.createElement(Icon, null)
1783
+ startIcon: (buttonModal == null ? void 0 : buttonModal.iconPosition) === "left" && /* @__PURE__ */ import_react12.default.createElement(Icon, null),
1784
+ endIcon: (buttonModal == null ? void 0 : buttonModal.iconPosition) === "right" && /* @__PURE__ */ import_react12.default.createElement(Icon, null)
1563
1785
  },
1564
1786
  capitalize((_d = buttonModal == null ? void 0 : buttonModal.text) != null ? _d : "filtrar")
1565
- ), /* @__PURE__ */ import_react11.default.createElement(import_material9.Modal, { open: openModal, onClose: toggleModal(false), sx: { boxShadow: 8 } }, /* @__PURE__ */ import_react11.default.createElement(
1787
+ ), /* @__PURE__ */ import_react12.default.createElement(import_material9.Modal, { open: openModal, onClose: handleOpen, sx: { boxShadow: 8 } }, /* @__PURE__ */ import_react12.default.createElement(
1566
1788
  import_material9.Box,
1567
1789
  {
1568
1790
  sx: {
@@ -1576,9 +1798,9 @@ var SCModal = ({
1576
1798
  boxShadow: 24
1577
1799
  }
1578
1800
  },
1579
- /* @__PURE__ */ import_react11.default.createElement(import_material9.Stack, { direction: "row", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ import_react11.default.createElement(import_material9.Stack, { direction: "row", alignItems: "center", p: 1, gap: 1.5 }, /* @__PURE__ */ import_react11.default.createElement(import_material9.Box, { display: "flex", justifyContent: "center", alignItems: "center", borderRadius: "50%", height: 36, width: 36, bgcolor: getModalColor(state) }, icon), /* @__PURE__ */ import_react11.default.createElement(import_material9.Typography, { variant: "h6", color: "text.primary" }, title)), /* @__PURE__ */ import_react11.default.createElement(import_material9.IconButton, { onClick: toggleModal(false), "data-testid": "test-buttonClose" }, /* @__PURE__ */ import_react11.default.createElement(import_icons_material7.Close, { color: "action" }))),
1580
- /* @__PURE__ */ import_react11.default.createElement(import_material9.Stack, { py: 1, px: 3, gap: 1.5 }, /* @__PURE__ */ import_react11.default.createElement(import_material9.Typography, { variant: "body1" }, description || defaultDescription)),
1581
- action && /* @__PURE__ */ import_react11.default.createElement(
1801
+ /* @__PURE__ */ import_react12.default.createElement(import_material9.Stack, { direction: "row", justifyContent: "space-between", alignItems: "center" }, /* @__PURE__ */ import_react12.default.createElement(import_material9.Stack, { direction: "row", alignItems: "center", p: 1, gap: 1.5 }, /* @__PURE__ */ import_react12.default.createElement(import_material9.Box, { display: "flex", justifyContent: "center", alignItems: "center", borderRadius: "50%", height: 36, width: 36, bgcolor: getModalColor(state) }, icon), /* @__PURE__ */ import_react12.default.createElement(import_material9.Typography, { variant: "h6", color: "text.primary" }, title)), /* @__PURE__ */ import_react12.default.createElement(import_material9.IconButton, { onClick: handleOpen, "data-testid": "test-buttonClose" }, /* @__PURE__ */ import_react12.default.createElement(import_icons_material7.Close, { color: "action" }))),
1802
+ /* @__PURE__ */ import_react12.default.createElement(import_material9.Stack, { py: 1, px: 3, gap: 1.5 }, /* @__PURE__ */ import_react12.default.createElement(import_material9.Typography, { variant: "body1" }, description || defaultDescription)),
1803
+ action && /* @__PURE__ */ import_react12.default.createElement(
1582
1804
  import_material9.Stack,
1583
1805
  {
1584
1806
  id: "Action",
@@ -1589,7 +1811,7 @@ var SCModal = ({
1589
1811
  bgcolor: "grey.50",
1590
1812
  sx: { borderRadius: 1 }
1591
1813
  },
1592
- /* @__PURE__ */ import_react11.default.createElement(
1814
+ /* @__PURE__ */ import_react12.default.createElement(
1593
1815
  import_material9.Button,
1594
1816
  {
1595
1817
  color: "inherit",
@@ -1599,7 +1821,7 @@ var SCModal = ({
1599
1821
  },
1600
1822
  capitalize("cancelar")
1601
1823
  ),
1602
- /* @__PURE__ */ import_react11.default.createElement(
1824
+ /* @__PURE__ */ import_react12.default.createElement(
1603
1825
  import_material9.Button,
1604
1826
  {
1605
1827
  "data-testid": "test-aceptar",
@@ -1616,32 +1838,32 @@ var SCModal = ({
1616
1838
  };
1617
1839
 
1618
1840
  // src/Components/MultiSelect/MultiSelect.tsx
1619
- var import_react14 = __toESM(require("react"), 1);
1841
+ var import_react15 = __toESM(require("react"), 1);
1620
1842
  var import_material10 = require("@mui/material");
1621
1843
  var import_icons_material9 = require("@mui/icons-material");
1622
1844
 
1623
1845
  // src/Components/MultiSelect/helpers/useHandlers.tsx
1624
- var import_react12 = require("react");
1846
+ var import_react13 = require("react");
1625
1847
  function useMultiSelectHandlers() {
1626
- const [anchorEl, setAnchorEl] = (0, import_react12.useState)(null);
1627
- const [open, setOpen] = (0, import_react12.useState)(false);
1628
- const [selectedItems, setSelectedItems] = (0, import_react12.useState)([]);
1629
- const [filterValue, setFilterValue] = (0, import_react12.useState)("");
1630
- const handleOpen = (0, import_react12.useCallback)((e) => {
1848
+ const [anchorEl, setAnchorEl] = (0, import_react13.useState)(null);
1849
+ const [open, setOpen] = (0, import_react13.useState)(false);
1850
+ const [selectedItems, setSelectedItems] = (0, import_react13.useState)([]);
1851
+ const [filterValue, setFilterValue] = (0, import_react13.useState)("");
1852
+ const handleOpen = (0, import_react13.useCallback)((e) => {
1631
1853
  setAnchorEl(e.currentTarget);
1632
1854
  setOpen(true);
1633
1855
  }, []);
1634
- const handleClose = (0, import_react12.useCallback)(() => {
1856
+ const handleClose = (0, import_react13.useCallback)(() => {
1635
1857
  setAnchorEl(null);
1636
1858
  setOpen(false);
1637
1859
  }, []);
1638
- const handleFilterChange = (0, import_react12.useCallback)(
1860
+ const handleFilterChange = (0, import_react13.useCallback)(
1639
1861
  (e) => {
1640
1862
  setFilterValue(e.target.value);
1641
1863
  },
1642
1864
  []
1643
1865
  );
1644
- const handleCheckboxToggle = (0, import_react12.useCallback)((item) => {
1866
+ const handleCheckboxToggle = (0, import_react13.useCallback)((item) => {
1645
1867
  setSelectedItems(
1646
1868
  (prev) => prev.includes(item) ? prev.filter((i) => i !== item) : [...prev, item]
1647
1869
  );
@@ -1668,15 +1890,15 @@ function getIconMultiSelect(name) {
1668
1890
  }
1669
1891
 
1670
1892
  // src/Components/MultiSelect/helpers/useFilteredItems.tsx
1671
- var import_react13 = require("react");
1893
+ var import_react14 = require("react");
1672
1894
  function useFilteredItems(items, filterValue, getItemLabel, selectedItems) {
1673
- const filteredItems = (0, import_react13.useMemo)(
1895
+ const filteredItems = (0, import_react14.useMemo)(
1674
1896
  () => items.filter(
1675
1897
  (item) => getItemLabel(item).toLowerCase().includes(filterValue.toLowerCase())
1676
1898
  ),
1677
1899
  [items, filterValue, getItemLabel]
1678
1900
  );
1679
- const sortedItems = (0, import_react13.useMemo)(() => {
1901
+ const sortedItems = (0, import_react14.useMemo)(() => {
1680
1902
  return [
1681
1903
  ...filteredItems.filter((item) => selectedItems.includes(item)),
1682
1904
  ...filteredItems.filter((item) => !selectedItems.includes(item))
@@ -1710,16 +1932,16 @@ function MultiSelect({
1710
1932
  handleCheckboxToggle,
1711
1933
  setOpen
1712
1934
  } = useMultiSelectHandlers();
1713
- (0, import_react14.useEffect)(() => {
1935
+ (0, import_react15.useEffect)(() => {
1714
1936
  if (open !== void 0) {
1715
1937
  setOpen(open);
1716
1938
  }
1717
1939
  }, [open, setOpen]);
1718
- (0, import_react14.useEffect)(() => {
1940
+ (0, import_react15.useEffect)(() => {
1719
1941
  setSelectedItems([]);
1720
1942
  }, [items, setSelectedItems]);
1721
1943
  const { filteredItems, sortedItems } = useFilteredItems(items, filterValue, getItemLabel, selectedItems);
1722
- const Icon = (0, import_react14.useMemo)(() => {
1944
+ const Icon = (0, import_react15.useMemo)(() => {
1723
1945
  var _a2;
1724
1946
  return getIconMultiSelect((_a2 = button == null ? void 0 : button.icon) != null ? _a2 : "FilterListOutlined");
1725
1947
  }, [button == null ? void 0 : button.icon]);
@@ -1733,7 +1955,7 @@ function MultiSelect({
1733
1955
  { text: "Aplicar", fn: () => {
1734
1956
  } }
1735
1957
  ];
1736
- return /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement(
1958
+ return /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(
1737
1959
  import_material10.Button,
1738
1960
  {
1739
1961
  "test-id": "multiselect-button",
@@ -1741,11 +1963,11 @@ function MultiSelect({
1741
1963
  onClick: handleOpen,
1742
1964
  variant: (_b = button == null ? void 0 : button.variant) != null ? _b : "text",
1743
1965
  size: "small",
1744
- startIcon: (button == null ? void 0 : button.iconPosition) === "left" || !(button == null ? void 0 : button.iconPosition) ? /* @__PURE__ */ import_react14.default.createElement(Icon, null) : null,
1745
- endIcon: (button == null ? void 0 : button.iconPosition) === "right" ? /* @__PURE__ */ import_react14.default.createElement(Icon, null) : null
1966
+ startIcon: (button == null ? void 0 : button.iconPosition) === "left" || !(button == null ? void 0 : button.iconPosition) ? /* @__PURE__ */ import_react15.default.createElement(Icon, null) : null,
1967
+ endIcon: (button == null ? void 0 : button.iconPosition) === "right" ? /* @__PURE__ */ import_react15.default.createElement(Icon, null) : null
1746
1968
  },
1747
1969
  capitalize(textButton != null ? textButton : "MultiSelect")
1748
- ), /* @__PURE__ */ import_react14.default.createElement(
1970
+ ), /* @__PURE__ */ import_react15.default.createElement(
1749
1971
  import_material10.Popover,
1750
1972
  {
1751
1973
  elevation: 8,
@@ -1754,7 +1976,7 @@ function MultiSelect({
1754
1976
  open: openMultiselect,
1755
1977
  onClose: () => setOpen(false)
1756
1978
  },
1757
- /* @__PURE__ */ import_react14.default.createElement(import_material10.Stack, { minWidth: "320px", "data-testid": "multiselect-container", bgcolor: "white", boxShadow: 3, borderRadius: 1 }, /* @__PURE__ */ import_react14.default.createElement(import_material10.Stack, { py: 1, px: 2 }, topPanel != null ? topPanel : /* @__PURE__ */ import_react14.default.createElement(import_material10.FormControl, { fullWidth: true, size: "small" }, /* @__PURE__ */ import_react14.default.createElement(
1979
+ /* @__PURE__ */ import_react15.default.createElement(import_material10.Stack, { minWidth: "320px", "data-testid": "multiselect-container", bgcolor: "white", boxShadow: 3, borderRadius: 1 }, /* @__PURE__ */ import_react15.default.createElement(import_material10.Stack, { py: 1, px: 2 }, topPanel != null ? topPanel : /* @__PURE__ */ import_react15.default.createElement(import_material10.FormControl, { fullWidth: true, size: "small" }, /* @__PURE__ */ import_react15.default.createElement(
1758
1980
  import_material10.TextField,
1759
1981
  {
1760
1982
  "data-testid": "multiselect-input",
@@ -1766,18 +1988,18 @@ function MultiSelect({
1766
1988
  onChange: handleFilterChange,
1767
1989
  slotProps: {
1768
1990
  input: {
1769
- endAdornment: /* @__PURE__ */ import_react14.default.createElement(import_material10.InputAdornment, { position: "end" }, /* @__PURE__ */ import_react14.default.createElement(import_icons_material9.SearchOutlined, { fontSize: "small" }))
1991
+ endAdornment: /* @__PURE__ */ import_react15.default.createElement(import_material10.InputAdornment, { position: "end" }, /* @__PURE__ */ import_react15.default.createElement(import_icons_material9.SearchOutlined, { fontSize: "small" }))
1770
1992
  }
1771
1993
  }
1772
1994
  }
1773
- ))), /* @__PURE__ */ import_react14.default.createElement(import_material10.Stack, { maxHeight: "300px", overflow: "auto" }, selectAll && /* @__PURE__ */ import_react14.default.createElement(import_material10.MenuItem, { dense, onClick: handleSelectAll }, /* @__PURE__ */ import_react14.default.createElement(import_material10.ListItemIcon, null, /* @__PURE__ */ import_react14.default.createElement(import_material10.Checkbox, { checked: allSelected, color: "primary" })), "Todos los items"), sortedItems.length > 0 ? sortedItems.map((item) => /* @__PURE__ */ import_react14.default.createElement(
1995
+ ))), /* @__PURE__ */ import_react15.default.createElement(import_material10.Stack, { maxHeight: "300px", overflow: "auto" }, selectAll && /* @__PURE__ */ import_react15.default.createElement(import_material10.MenuItem, { dense, onClick: handleSelectAll }, /* @__PURE__ */ import_react15.default.createElement(import_material10.ListItemIcon, null, /* @__PURE__ */ import_react15.default.createElement(import_material10.Checkbox, { checked: allSelected, color: "primary" })), "Todos los items"), sortedItems.length > 0 ? sortedItems.map((item) => /* @__PURE__ */ import_react15.default.createElement(
1774
1996
  import_material10.MenuItem,
1775
1997
  {
1776
1998
  key: getItemLabel(item),
1777
1999
  dense,
1778
2000
  onClick: () => handleCheckboxToggle(item)
1779
2001
  },
1780
- /* @__PURE__ */ import_react14.default.createElement(import_material10.ListItemIcon, null, /* @__PURE__ */ import_react14.default.createElement(
2002
+ /* @__PURE__ */ import_react15.default.createElement(import_material10.ListItemIcon, null, /* @__PURE__ */ import_react15.default.createElement(
1781
2003
  import_material10.Checkbox,
1782
2004
  {
1783
2005
  checked: selectedItems.includes(item),
@@ -1785,9 +2007,9 @@ function MultiSelect({
1785
2007
  }
1786
2008
  )),
1787
2009
  getItemLabel(item)
1788
- )) : /* @__PURE__ */ import_react14.default.createElement(import_material10.MenuItem, { disabled: true }, "No se encontraron resultados")), /* @__PURE__ */ import_react14.default.createElement(import_material10.Stack, { direction: "row", gap: 1, p: 1, justifyContent: "space-between", bgcolor: "grey.50" }, resolvedActions.map((button2, index) => {
2010
+ )) : /* @__PURE__ */ import_react15.default.createElement(import_material10.MenuItem, { disabled: true }, "No se encontraron resultados")), /* @__PURE__ */ import_react15.default.createElement(import_material10.Stack, { direction: "row", gap: 1, p: 1, justifyContent: "space-between", bgcolor: "grey.50" }, resolvedActions.map((button2, index) => {
1789
2011
  var _a2;
1790
- return /* @__PURE__ */ import_react14.default.createElement(
2012
+ return /* @__PURE__ */ import_react15.default.createElement(
1791
2013
  import_material10.Button,
1792
2014
  {
1793
2015
  key: index,
@@ -1803,7 +2025,7 @@ function MultiSelect({
1803
2025
  }
1804
2026
 
1805
2027
  // src/Components/PageHeader/PageHeader.tsx
1806
- var import_react15 = __toESM(require("react"), 1);
2028
+ var import_react16 = __toESM(require("react"), 1);
1807
2029
  var import_material11 = require("@mui/material");
1808
2030
  var PageHeader = ({
1809
2031
  title,
@@ -1813,7 +2035,7 @@ var PageHeader = ({
1813
2035
  fixed,
1814
2036
  shadow = true
1815
2037
  }) => {
1816
- return /* @__PURE__ */ import_react15.default.createElement(
2038
+ return /* @__PURE__ */ import_react16.default.createElement(
1817
2039
  import_material11.Stack,
1818
2040
  {
1819
2041
  "data-testid": "main-container",
@@ -1825,12 +2047,12 @@ var PageHeader = ({
1825
2047
  zIndex: 10,
1826
2048
  sx: { boxShadow: shadow ? (theme) => theme.shadows[1] : "none" }
1827
2049
  },
1828
- /* @__PURE__ */ import_react15.default.createElement(import_material11.Stack, { "data-testid": "page-header-content", height: 40, px: 3, pl: buttonBack ? 1 : 3, direction: "row", alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ import_react15.default.createElement(import_material11.Stack, { id: "left-section", direction: "row", alignItems: "center", gap: 1 }, buttonBack, /* @__PURE__ */ import_react15.default.createElement(import_material11.Stack, { id: "text-section", gap: 0.5 }, /* @__PURE__ */ import_react15.default.createElement(import_material11.Typography, { "data-testid": "page-header-title", variant: "h6", color: "text.primary" }, title), subtitle && /* @__PURE__ */ import_react15.default.createElement(import_material11.Typography, { "data-testid": "page-header-subtitle", variant: "caption", color: "text.primary" }, subtitle))), actions && /* @__PURE__ */ import_react15.default.createElement(import_material11.Stack, { id: "right-actions", direction: "row", alignItems: "center", gap: 1 }, actions))
2050
+ /* @__PURE__ */ import_react16.default.createElement(import_material11.Stack, { "data-testid": "page-header-content", height: 40, px: 3, pl: buttonBack ? 1 : 3, direction: "row", alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ import_react16.default.createElement(import_material11.Stack, { id: "left-section", direction: "row", alignItems: "center", gap: 1 }, buttonBack, /* @__PURE__ */ import_react16.default.createElement(import_material11.Stack, { id: "text-section", gap: 0.5 }, /* @__PURE__ */ import_react16.default.createElement(import_material11.Typography, { "data-testid": "page-header-title", variant: "h6", color: "text.primary" }, title), subtitle && /* @__PURE__ */ import_react16.default.createElement(import_material11.Typography, { "data-testid": "page-header-subtitle", variant: "caption", color: "text.primary" }, subtitle))), actions && /* @__PURE__ */ import_react16.default.createElement(import_material11.Stack, { id: "right-actions", direction: "row", alignItems: "center", gap: 1 }, actions))
1829
2051
  );
1830
2052
  };
1831
2053
 
1832
2054
  // src/Components/SCCalendarSwipeable.tsx
1833
- var import_react16 = __toESM(require("react"), 1);
2055
+ var import_react17 = __toESM(require("react"), 1);
1834
2056
  var import_material12 = require("@mui/material");
1835
2057
  var import_Grid24 = __toESM(require("@mui/material/Grid2"), 1);
1836
2058
  var import_AdapterDateFns = require("@mui/x-date-pickers/AdapterDateFns");
@@ -1849,14 +2071,14 @@ var SCCalendarSwipeable = ({
1849
2071
  state
1850
2072
  }) => {
1851
2073
  let convertFecha;
1852
- const [fecha, setFecha] = (0, import_react16.useState)(/* @__PURE__ */ new Date());
1853
- const [fechaSeleccionada, setFechaSeleccionada] = (0, import_react16.useState)();
1854
- const [stateVal, setstateVal] = import_react16.default.useState(/* @__PURE__ */ new Date());
1855
- const [openCalendar, setOpenCalendar] = import_react16.default.useState(false);
2074
+ const [fecha, setFecha] = (0, import_react17.useState)(/* @__PURE__ */ new Date());
2075
+ const [fechaSeleccionada, setFechaSeleccionada] = (0, import_react17.useState)();
2076
+ const [stateVal, setstateVal] = import_react17.default.useState(/* @__PURE__ */ new Date());
2077
+ const [openCalendar, setOpenCalendar] = import_react17.default.useState(false);
1856
2078
  const hoy = /* @__PURE__ */ new Date();
1857
2079
  const inicioSemana = (0, import_date_fns.startOfWeek)(fecha, { weekStartsOn: 0 });
1858
2080
  const diasSemana = Array.from({ length: 7 }, (_, i) => (0, import_date_fns.addDays)(inicioSemana, i));
1859
- import_react16.default.useEffect(() => {
2081
+ import_react17.default.useEffect(() => {
1860
2082
  if (fecha != null) {
1861
2083
  handleConvertFecha(fecha);
1862
2084
  }
@@ -1875,11 +2097,11 @@ var SCCalendarSwipeable = ({
1875
2097
  setOpenCalendar(newOpen);
1876
2098
  };
1877
2099
  const locale = __spreadValues({}, import_locale.es);
1878
- return /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(import_LocalizationProvider2.LocalizationProvider, { dateAdapter: import_AdapterDateFns.AdapterDateFns, adapterLocale: locale }, openCalendar == false ? /* @__PURE__ */ import_react16.default.createElement(import_material12.Box, { "data-testid": "calendar-mobile", sx: { width: "100%", background: background ? background : "white", display: "flex", flexDirection: "column", alignItems: "center" } }, /* @__PURE__ */ import_react16.default.createElement(import_material12.Box, { sx: { width: "100%", maxWidth: "320px", background: "transparent" } }, /* @__PURE__ */ import_react16.default.createElement(import_Grid24.default, { container: true, gap: 0.5, sx: {
2100
+ return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, /* @__PURE__ */ import_react17.default.createElement(import_LocalizationProvider2.LocalizationProvider, { dateAdapter: import_AdapterDateFns.AdapterDateFns, adapterLocale: locale }, openCalendar == false ? /* @__PURE__ */ import_react17.default.createElement(import_material12.Box, { "data-testid": "calendar-mobile", sx: { width: "100%", background: background ? background : "white", display: "flex", flexDirection: "column", alignItems: "center" } }, /* @__PURE__ */ import_react17.default.createElement(import_material12.Box, { sx: { width: "100%", maxWidth: "320px", background: "transparent" } }, /* @__PURE__ */ import_react17.default.createElement(import_Grid24.default, { container: true, gap: 0.5, sx: {
1879
2101
  justifyContent: "space-between",
1880
2102
  padding: "12px 0px",
1881
2103
  background: "transparent"
1882
- } }, diasSemana.map((dia) => /* @__PURE__ */ import_react16.default.createElement(import_Grid24.default, { sx: { width: "36px" }, key: dia.toString() }, /* @__PURE__ */ import_react16.default.createElement(import_material12.Box, { sx: { width: "36px", height: "40px", display: "flex", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ import_react16.default.createElement(import_material12.Typography, { sx: { fontSize: "12px !important", color: "#10184099" } }, (0, import_date_fns.format)(dia, "EEEE", { locale: import_locale.es }).charAt(0).toUpperCase())), /* @__PURE__ */ import_react16.default.createElement(
2104
+ } }, diasSemana.map((dia) => /* @__PURE__ */ import_react17.default.createElement(import_Grid24.default, { sx: { width: "36px" }, key: dia.toString() }, /* @__PURE__ */ import_react17.default.createElement(import_material12.Box, { sx: { width: "36px", height: "40px", display: "flex", alignItems: "center", justifyContent: "center" } }, /* @__PURE__ */ import_react17.default.createElement(import_material12.Typography, { sx: { fontSize: "12px !important", color: "#10184099" } }, (0, import_date_fns.format)(dia, "EEEE", { locale: import_locale.es }).charAt(0).toUpperCase())), /* @__PURE__ */ import_react17.default.createElement(
1883
2105
  import_material12.Box,
1884
2106
  {
1885
2107
  onClick: () => setFecha(dia),
@@ -1895,8 +2117,8 @@ var SCCalendarSwipeable = ({
1895
2117
  //height: '36px',
1896
2118
  }
1897
2119
  },
1898
- /* @__PURE__ */ import_react16.default.createElement(import_material12.Typography, { sx: { fontSize: "12px !important", color: (0, import_date_fns.isSameDay)(dia, fecha) ? "white" : "#101840DE" } }, (0, import_date_fns.format)(dia, "d"))
1899
- )))), /* @__PURE__ */ import_react16.default.createElement(import_Grid24.default, { container: true, justifyContent: "center" }, /* @__PURE__ */ import_react16.default.createElement(import_material12.IconButton, { "data-testid": "open-calendar-button", onClick: toggleCalendar(true) }, /* @__PURE__ */ import_react16.default.createElement(import_KeyboardDoubleArrowDown.default, null))))) : /* @__PURE__ */ import_react16.default.createElement(import_material12.Box, { sx: { width: "100%", background: "white" } }, /* @__PURE__ */ import_react16.default.createElement(
2120
+ /* @__PURE__ */ import_react17.default.createElement(import_material12.Typography, { sx: { fontSize: "12px !important", color: (0, import_date_fns.isSameDay)(dia, fecha) ? "white" : "#101840DE" } }, (0, import_date_fns.format)(dia, "d"))
2121
+ )))), /* @__PURE__ */ import_react17.default.createElement(import_Grid24.default, { container: true, justifyContent: "center" }, /* @__PURE__ */ import_react17.default.createElement(import_material12.IconButton, { "data-testid": "open-calendar-button", onClick: toggleCalendar(true) }, /* @__PURE__ */ import_react17.default.createElement(import_KeyboardDoubleArrowDown.default, null))))) : /* @__PURE__ */ import_react17.default.createElement(import_material12.Box, { sx: { width: "100%", background: "white" } }, /* @__PURE__ */ import_react17.default.createElement(
1900
2122
  import_StaticDatePicker.StaticDatePicker,
1901
2123
  {
1902
2124
  orientation: "landscape",
@@ -1906,17 +2128,17 @@ var SCCalendarSwipeable = ({
1906
2128
  sx: { fontSize: "12px !important", height: "300px !important", background: background ? background : "white", "& .MuiDayCalendar-header": { justifyContent: "space-between" }, "& .MuiDayCalendar-weekContainer": { justifyContent: "space-between" }, "& .MuiPickersCalendarHeader-root": { paddingLeft: "0px", paddingRight: "0px", color: "#10184099" }, "& .MuiPickersDay-root": { fontSize: "12px !important" }, "& .MuiDayCalendar-weekDayLabel": { fontSize: "12px !important" } },
1907
2129
  onChange: (newValue) => setFecha(newValue)
1908
2130
  }
1909
- ), /* @__PURE__ */ import_react16.default.createElement(import_Grid24.default, { container: true, justifyContent: "center" }, /* @__PURE__ */ import_react16.default.createElement(import_material12.IconButton, { "data-testid": "close-calendar-button", onClick: toggleCalendar(false) }, /* @__PURE__ */ import_react16.default.createElement(import_KeyboardDoubleArrowUp.default, null))))));
2131
+ ), /* @__PURE__ */ import_react17.default.createElement(import_Grid24.default, { container: true, justifyContent: "center" }, /* @__PURE__ */ import_react17.default.createElement(import_material12.IconButton, { "data-testid": "close-calendar-button", onClick: toggleCalendar(false) }, /* @__PURE__ */ import_react17.default.createElement(import_KeyboardDoubleArrowUp.default, null))))));
1910
2132
  };
1911
2133
 
1912
2134
  // src/Components/SCDataGrid.tsx
1913
- var import_react17 = __toESM(require("react"), 1);
2135
+ var import_react18 = __toESM(require("react"), 1);
1914
2136
  var import_x_data_grid_pro = require("@mui/x-data-grid-pro");
1915
2137
  var import_x_license_pro2 = require("@mui/x-license-pro");
1916
2138
  var import_KeyboardArrowDown = __toESM(require("@mui/icons-material/KeyboardArrowDown"), 1);
1917
2139
  var import_KeyboardArrowUp = __toESM(require("@mui/icons-material/KeyboardArrowUp"), 1);
1918
2140
  var import_styles = require("@mui/material/styles");
1919
- var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelection, width, maxHeight, density }) => {
2141
+ function SCDataGridInitial({ data, columns, groupColumns, rowsTable, checkboxSelection, width, maxHeight, density }) {
1920
2142
  import_x_license_pro2.LicenseInfo.setLicenseKey(
1921
2143
  "77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI="
1922
2144
  );
@@ -1927,45 +2149,80 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
1927
2149
  return Math.floor(Math.random() * 1e6);
1928
2150
  }
1929
2151
  const getTreeDataPaths = (row) => {
2152
+ var _a, _b, _c;
2153
+ const group1Value = groupColumns && ((_a = groupColumns(row)) == null ? void 0 : _a.valueGroup1);
2154
+ const group2Value = groupColumns && ((_b = groupColumns(row)) == null ? void 0 : _b.valueGroup2);
2155
+ const fieldValue = groupColumns && ((_c = groupColumns(row)) == null ? void 0 : _c.fieldFirstColumn);
1930
2156
  return [
1931
- row[groupColumns[0].split("[")[1].split("]")[0].trim()],
1932
- ...groupColumns.length > 2 ? [row[groupColumns[1].split("[")[1].split("]")[0].trim()]] : [],
1933
- `${row[groupColumns[groupColumns.length - 1].split("[")[1].split("]")[0].trim()].toString()}/${generateRandomId()}`
2157
+ String(group1Value || ""),
2158
+ ...group2Value ? [String(group2Value)] : [],
2159
+ `${String(fieldValue || "")}/${generateRandomId()}`
1934
2160
  ];
1935
2161
  };
1936
2162
  const groupingColDefs = {
1937
2163
  field: "grouping",
1938
- headerName: groupColumns != void 0 ? groupColumns[groupColumns.length - 1].split("[").length == 2 ? groupColumns[groupColumns.length - 1].split("[")[0].trim() : "Agrupador" : "",
2164
+ headerName: groupColumns ? groupColumns(data[0]).headerNameFirstColumn : "Agrupador",
1939
2165
  renderCell: (params) => {
1940
- var _a;
2166
+ var _a, _b;
1941
2167
  let label = params.value.toString().includes("/") ? params.value.split("/")[0].toString() : params.value.toString();
1942
- const maxDepth = groupColumns ? groupColumns.length - 2 : 0;
1943
- if (groupColumns != void 0) {
2168
+ let maxDepth = 0;
2169
+ if (groupColumns && data.length > 0) {
2170
+ const sampleItem = groupColumns(data[0]);
2171
+ if (sampleItem.valueGroup1) maxDepth++;
2172
+ if (sampleItem.valueGroup2) maxDepth++;
2173
+ maxDepth = Math.max(0, maxDepth - 1);
2174
+ }
2175
+ if (groupColumns) {
1944
2176
  if (params.rowNode.depth === 0) {
1945
- const textBegin = groupColumns[0] ? groupColumns[0].split("[")[0].trim() : "";
1946
- const textEnd = groupColumns[0] ? groupColumns[0].split("]")[1].trim() : "";
1947
- const labelGrouping1 = `${textBegin} ${label} ${textEnd}`;
1948
- const fieldGrouping1 = groupColumns[0].split("[")[1].split("]")[0].trim();
1949
- const fieldGrouping2 = groupColumns[1].split("[")[1].split("]")[0].trim();
1950
- const subgroup1 = arrayRows.filter((r) => r[fieldGrouping1].toString() === label).map((r) => r[fieldGrouping2]);
2177
+ let customLabel = label;
2178
+ if (groupColumns) {
2179
+ const originalItem = data.find(
2180
+ (item) => {
2181
+ var _a2;
2182
+ return String((_a2 = groupColumns(item)) == null ? void 0 : _a2.valueGroup1) === label;
2183
+ }
2184
+ );
2185
+ if (originalItem) {
2186
+ const itemValue = groupColumns(originalItem);
2187
+ customLabel = itemValue.textGroup1 || label;
2188
+ }
2189
+ }
2190
+ const subgroup1 = arrayRows.filter((r) => {
2191
+ var _a2;
2192
+ return groupColumns && String((_a2 = groupColumns(r)) == null ? void 0 : _a2.valueGroup1) === label;
2193
+ }).map((r) => {
2194
+ var _a2;
2195
+ return groupColumns && String((_a2 = groupColumns(r)) == null ? void 0 : _a2.valueGroup2);
2196
+ });
1951
2197
  const groupedDataLength1 = subgroup1.filter((valor, indiceActual, arreglo) => arreglo.indexOf(valor) === indiceActual);
1952
- label = `${labelGrouping1} (${groupedDataLength1.length})`;
1953
- } else if (groupColumns.length > 2 && params.rowNode.depth === 1) {
1954
- const labelGrouping1 = (_a = params.api.getRowNode(params.rowNode.parent)) == null ? void 0 : _a.groupingKey;
1955
- const textBegin = groupColumns[1] ? groupColumns[1].split("[")[0] : "";
1956
- const textEnd = groupColumns[1] ? groupColumns[1].split("]")[1].trim() : "";
1957
- const labelGrouping2 = `${textBegin} ${label} ${textEnd}`;
1958
- const fieldGrouping1 = groupColumns[0].split("[")[1].split("]")[0].trim();
1959
- const fieldGrouping2 = groupColumns[1].split("[")[1].split("]")[0].trim();
2198
+ label = `${customLabel} (${groupedDataLength1.length})`;
2199
+ } else if (((_a = groupColumns(data[0])) == null ? void 0 : _a.valueGroup2) && params.rowNode.depth === 1) {
2200
+ const labelGrouping1 = (_b = params.api.getRowNode(params.rowNode.parent)) == null ? void 0 : _b.groupingKey.toString();
2201
+ let customLabel = label;
2202
+ if (groupColumns) {
2203
+ const originalItem = data.find(
2204
+ (item) => {
2205
+ var _a2;
2206
+ return String((_a2 = groupColumns(item)) == null ? void 0 : _a2.valueGroup2) === label;
2207
+ }
2208
+ );
2209
+ if (originalItem) {
2210
+ const itemValue = groupColumns(originalItem);
2211
+ customLabel = itemValue.textGroup2 || label;
2212
+ }
2213
+ }
1960
2214
  const groupedDataLength2 = arrayRows.filter(
1961
- (r) => r[fieldGrouping1] === labelGrouping1 && r[fieldGrouping2] === label
2215
+ (r) => {
2216
+ var _a2, _b2;
2217
+ return groupColumns && String((_a2 = groupColumns(r)) == null ? void 0 : _a2.valueGroup1) === labelGrouping1 && groupColumns && String((_b2 = groupColumns(r)) == null ? void 0 : _b2.valueGroup2) === label;
2218
+ }
1962
2219
  ).length;
1963
- label = `${labelGrouping2} (${groupedDataLength2})`;
2220
+ label = `${customLabel} (${groupedDataLength2})`;
1964
2221
  } else {
1965
2222
  label = label;
1966
2223
  }
1967
2224
  }
1968
- return /* @__PURE__ */ import_react17.default.createElement(
2225
+ return /* @__PURE__ */ import_react18.default.createElement(
1969
2226
  "div",
1970
2227
  {
1971
2228
  style: {
@@ -1982,7 +2239,7 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
1982
2239
  fontWeight: params.rowNode.type == "group" ? "400" : "300"
1983
2240
  }
1984
2241
  },
1985
- params.rowNode.type === "group" && /* @__PURE__ */ import_react17.default.createElement(
2242
+ params.rowNode.type === "group" && /* @__PURE__ */ import_react18.default.createElement(
1986
2243
  "span",
1987
2244
  {
1988
2245
  style: {
@@ -1995,25 +2252,32 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
1995
2252
  params.api.setRowChildrenExpansion(params.id, !params.rowNode.childrenExpanded);
1996
2253
  }
1997
2254
  },
1998
- params.rowNode.childrenExpanded ? /* @__PURE__ */ import_react17.default.createElement(import_KeyboardArrowUp.default, { fontSize: "small", color: "action" }) : /* @__PURE__ */ import_react17.default.createElement(import_KeyboardArrowDown.default, { fontSize: "small", color: "action" })
2255
+ params.rowNode.childrenExpanded ? /* @__PURE__ */ import_react18.default.createElement(import_KeyboardArrowUp.default, { fontSize: "small", color: "action" }) : /* @__PURE__ */ import_react18.default.createElement(import_KeyboardArrowDown.default, { fontSize: "small", color: "action" })
1999
2256
  ),
2000
2257
  label
2001
2258
  );
2002
2259
  },
2003
2260
  colSpan: (params) => {
2261
+ var _a, _b;
2004
2262
  const value = String(params);
2005
- const fieldGrouping1 = groupColumns[0].split("[")[1].split("]")[0].trim();
2006
- const fieldGrouping2 = groupColumns.length > 2 ? groupColumns[1].split("[")[1].split("]")[0].trim() : void 0;
2263
+ const fieldGrouping1 = groupColumns ? (_a = groupColumns(data[0])) == null ? void 0 : _a.valueGroup1 : void 0;
2264
+ const fieldGrouping2 = groupColumns ? (_b = groupColumns(data[0])) == null ? void 0 : _b.valueGroup2 : void 0;
2007
2265
  let agrupado1 = false;
2008
2266
  let agrupado2 = false;
2009
2267
  if (fieldGrouping1 != void 0) {
2010
2268
  agrupado1 = arrayRows.some(
2011
- (row) => String(row[fieldGrouping1]) === value
2269
+ (row) => {
2270
+ var _a2;
2271
+ return groupColumns && String((_a2 = groupColumns(row)) == null ? void 0 : _a2.valueGroup1) === value;
2272
+ }
2012
2273
  );
2013
2274
  }
2014
2275
  if (fieldGrouping2 != void 0) {
2015
2276
  agrupado2 = arrayRows.some(
2016
- (row) => String(row[fieldGrouping2]) === value
2277
+ (row) => {
2278
+ var _a2;
2279
+ return groupColumns && String((_a2 = groupColumns(row)) == null ? void 0 : _a2.valueGroup2) === value;
2280
+ }
2017
2281
  );
2018
2282
  }
2019
2283
  if (agrupado1 || agrupado2) {
@@ -2030,11 +2294,11 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
2030
2294
  let styleRowHeight = density == "compact" ? 32 : density == "standard" ? 28 : density == "comfortable" ? 36 : 32;
2031
2295
  let rows = rowsTable ? rowsTable : validationTreeData != false ? parseInt(data.length.toString()) : data.length < 10 ? parseInt(data.length.toString()) : 10;
2032
2296
  let validationGroupingColDef = groupingColDefs || {};
2033
- const [groupDataLenght, setGroupDataLengh] = (0, import_react17.useState)(0);
2034
- const [pageSize, setPageSize] = (0, import_react17.useState)(rows);
2035
- const [arrayRows, setArrayRows] = (0, import_react17.useState)([]);
2036
- const [selectionModel, setSelectionModel] = (0, import_react17.useState)([]);
2037
- (0, import_react17.useEffect)(() => {
2297
+ const [groupDataLenght, setGroupDataLengh] = (0, import_react18.useState)(0);
2298
+ const [pageSize, setPageSize] = (0, import_react18.useState)(rows);
2299
+ const [arrayRows, setArrayRows] = (0, import_react18.useState)([]);
2300
+ const [selectionModel, setSelectionModel] = (0, import_react18.useState)([]);
2301
+ (0, import_react18.useEffect)(() => {
2038
2302
  if ((data == null ? void 0 : data.length) > 0) {
2039
2303
  dataConvertRows(data, void 0);
2040
2304
  }
@@ -2090,7 +2354,7 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
2090
2354
  setSelectionModel([...newSelection]);
2091
2355
  }
2092
2356
  };
2093
- return /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, data && /* @__PURE__ */ import_react17.default.createElement(import_react17.default.Fragment, null, /* @__PURE__ */ import_react17.default.createElement("div", { style: { width: width || "100%", maxHeight: maxHeight ? `${maxHeight}px` : "none" } }, /* @__PURE__ */ import_react17.default.createElement(
2357
+ return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, data && /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement("div", { style: { width: width || "100%", maxHeight: maxHeight ? `${maxHeight}px` : "none" } }, /* @__PURE__ */ import_react18.default.createElement(
2094
2358
  import_x_data_grid_pro.DataGridPro,
2095
2359
  {
2096
2360
  apiRef,
@@ -2124,7 +2388,6 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
2124
2388
  },
2125
2389
  sx: {
2126
2390
  maxHeight: maxHeight ? `${maxHeight}px` : "none",
2127
- //overflow: 'auto',
2128
2391
  "& .MuiDataGrid-filler": {
2129
2392
  display: "none !important"
2130
2393
  },
@@ -2154,14 +2417,14 @@ var SCDataGridInitial = ({ data, columns, groupColumns, rowsTable, checkboxSelec
2154
2417
  }
2155
2418
  }
2156
2419
  ))));
2157
- };
2158
- var SCDataGrid = import_react17.default.memo(SCDataGridInitial, (prevProps, nextProps) => {
2159
- const isEqual = prevProps.data === nextProps.data && prevProps.columns === nextProps.columns && prevProps.groupColumns === nextProps.groupColumns && prevProps.rowsTable === nextProps.rowsTable && prevProps.checkboxSelection === nextProps.checkboxSelection && prevProps.width === nextProps.width && prevProps.maxHeight === nextProps.maxHeight && prevProps.density === nextProps.density;
2420
+ }
2421
+ var SCDataGrid = import_react18.default.memo(SCDataGridInitial, (prevProps, nextProps) => {
2422
+ const isEqual = prevProps.rowsTable === nextProps.rowsTable && prevProps.checkboxSelection === nextProps.checkboxSelection && prevProps.width === nextProps.width && prevProps.maxHeight === nextProps.maxHeight && prevProps.density === nextProps.density;
2160
2423
  return isEqual;
2161
2424
  });
2162
2425
 
2163
2426
  // src/Components/EmptyState/EmptyState.tsx
2164
- var import_react18 = __toESM(require("react"), 1);
2427
+ var import_react19 = __toESM(require("react"), 1);
2165
2428
  var import_material13 = require("@mui/material");
2166
2429
 
2167
2430
  // src/assets/ImgEmptyState/create.svg
@@ -2189,7 +2452,7 @@ var DefaultIcon = ({
2189
2452
  }) => {
2190
2453
  const imageUrl = EmptyStateImageUrls[state];
2191
2454
  const iconSize = size === "small" ? { width: "40px", height: "40px" } : { width: "60px", height: "60px" };
2192
- return /* @__PURE__ */ import_react18.default.createElement("img", { src: imageUrl, alt: state, style: iconSize });
2455
+ return /* @__PURE__ */ import_react19.default.createElement("img", { src: imageUrl, alt: state, style: iconSize });
2193
2456
  };
2194
2457
  var EmptyState = ({
2195
2458
  state = "create",
@@ -2198,11 +2461,11 @@ var EmptyState = ({
2198
2461
  subtitle,
2199
2462
  actions,
2200
2463
  containerHeight = "100vh",
2201
- icon = /* @__PURE__ */ import_react18.default.createElement(DefaultIcon, { state, size })
2464
+ icon = /* @__PURE__ */ import_react19.default.createElement(DefaultIcon, { state, size })
2202
2465
  }) => {
2203
2466
  const titleVariant = size === "small" ? "subtitle2" : "h6";
2204
2467
  const subtitleVariant = size === "small" ? "caption" : "body1";
2205
- return /* @__PURE__ */ import_react18.default.createElement(
2468
+ return /* @__PURE__ */ import_react19.default.createElement(
2206
2469
  import_material13.Stack,
2207
2470
  {
2208
2471
  alignItems: "center",
@@ -2211,8 +2474,8 @@ var EmptyState = ({
2211
2474
  height: containerHeight,
2212
2475
  "data-testid": "empty-state-container"
2213
2476
  },
2214
- icon && /* @__PURE__ */ import_react18.default.createElement(import_material13.Stack, null, icon),
2215
- /* @__PURE__ */ import_react18.default.createElement(import_material13.Stack, { gap: 0.5 }, /* @__PURE__ */ import_react18.default.createElement(import_material13.Typography, { color: "text.primary", variant: titleVariant, textAlign: "center" }, title), subtitle && /* @__PURE__ */ import_react18.default.createElement(
2477
+ icon && /* @__PURE__ */ import_react19.default.createElement(import_material13.Stack, null, icon),
2478
+ /* @__PURE__ */ import_react19.default.createElement(import_material13.Stack, { gap: 0.5 }, /* @__PURE__ */ import_react19.default.createElement(import_material13.Typography, { color: "text.primary", variant: titleVariant, textAlign: "center" }, title), subtitle && /* @__PURE__ */ import_react19.default.createElement(
2216
2479
  import_material13.Typography,
2217
2480
  {
2218
2481
  variant: subtitleVariant,
@@ -2220,7 +2483,7 @@ var EmptyState = ({
2220
2483
  color: "text.secondary"
2221
2484
  },
2222
2485
  subtitle
2223
- ), actions && (actions == null ? void 0 : actions.length) > 0 && /* @__PURE__ */ import_react18.default.createElement(
2486
+ ), actions && (actions == null ? void 0 : actions.length) > 0 && /* @__PURE__ */ import_react19.default.createElement(
2224
2487
  import_material13.Stack,
2225
2488
  {
2226
2489
  direction: "row",
@@ -2230,15 +2493,15 @@ var EmptyState = ({
2230
2493
  },
2231
2494
  actions.map((action, index) => {
2232
2495
  var _a, _b, _c, _d;
2233
- return /* @__PURE__ */ import_react18.default.createElement(
2496
+ return /* @__PURE__ */ import_react19.default.createElement(
2234
2497
  import_material13.Button,
2235
2498
  {
2236
2499
  key: index,
2237
2500
  color: (_a = action.color) != null ? _a : "primary",
2238
2501
  variant: (_b = action.variant) != null ? _b : "text",
2239
2502
  size: (_c = action.size) != null ? _c : "small",
2240
- startIcon: action.icon && action.iconPosition === "left" ? /* @__PURE__ */ import_react18.default.createElement("img", { src: action.icon, alt: "icon" }) : void 0,
2241
- endIcon: action.icon && action.iconPosition === "right" ? /* @__PURE__ */ import_react18.default.createElement("img", { src: action.icon, alt: "icon" }) : void 0,
2503
+ startIcon: action.icon && action.iconPosition === "left" ? /* @__PURE__ */ import_react19.default.createElement("img", { src: action.icon, alt: "icon" }) : void 0,
2504
+ endIcon: action.icon && action.iconPosition === "right" ? /* @__PURE__ */ import_react19.default.createElement("img", { src: action.icon, alt: "icon" }) : void 0,
2242
2505
  onClick: action.onClick
2243
2506
  },
2244
2507
  capitalize((_d = action.text) != null ? _d : "action")
@@ -2249,7 +2512,7 @@ var EmptyState = ({
2249
2512
  };
2250
2513
 
2251
2514
  // src/Components/SCDialog.tsx
2252
- var import_react19 = __toESM(require("react"), 1);
2515
+ var import_react20 = __toESM(require("react"), 1);
2253
2516
  var import_material14 = require("@mui/material");
2254
2517
  var import_Grid25 = __toESM(require("@mui/material/Grid2"), 1);
2255
2518
  var import_Close2 = __toESM(require("@mui/icons-material/Close"), 1);
@@ -2259,8 +2522,8 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2259
2522
  let iconTitleValidation = "";
2260
2523
  let IconTitle;
2261
2524
  let ButtonIcon;
2262
- const [open, setOpen] = (0, import_react19.useState)(show);
2263
- (0, import_react19.useEffect)(() => {
2525
+ const [open, setOpen] = (0, import_react20.useState)(show);
2526
+ (0, import_react20.useEffect)(() => {
2264
2527
  if (show) {
2265
2528
  handleOpen();
2266
2529
  } else {
@@ -2285,7 +2548,7 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2285
2548
  });
2286
2549
  if (iconTitle) {
2287
2550
  if (Muicon5[iconTitle] == void 0) {
2288
- if (iconTitle && import_react19.default.isValidElement(iconTitle) && iconTitle.type == void 0) {
2551
+ if (iconTitle && import_react20.default.isValidElement(iconTitle) && iconTitle.type == void 0) {
2289
2552
  iconTitleValidation = "image";
2290
2553
  IconTitle = iconTitle;
2291
2554
  } else {
@@ -2310,8 +2573,8 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2310
2573
  }
2311
2574
  };
2312
2575
  const dialogActions = actions != null ? actions : [{ text: "Cerrar", fn: handleClose }];
2313
- content = content != null ? content : { component: /* @__PURE__ */ import_react19.default.createElement(import_material14.Box, null, " Aqui va el contenido ") };
2314
- return /* @__PURE__ */ import_react19.default.createElement("div", null, buttonDialog ? /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, buttonDialog.text != void 0 ? /* @__PURE__ */ import_react19.default.createElement(import_material14.Tooltip, { placement: "bottom-start", title: buttonDialog.tooltip != void 0 ? buttonDialog.tooltip : "", slotProps: { popper: { modifiers: [{ name: "offset", options: { offset: [0, -14] } }] } } }, /* @__PURE__ */ import_react19.default.createElement(import_material14.Button, { size: "small", color: buttonDialog.color != void 0 ? buttonDialog.color : "primary", variant: (buttonDialog == null ? void 0 : buttonDialog.variant) != void 0 ? buttonDialog == null ? void 0 : buttonDialog.variant : "text", startIcon: (buttonDialog == null ? void 0 : buttonDialog.iconPosition) != void 0 ? (buttonDialog == null ? void 0 : buttonDialog.iconPosition) == "left" ? /* @__PURE__ */ import_react19.default.createElement(ButtonIcon, { color: buttonDialog.color != void 0 ? buttonDialog.color : "primary" }) : "" : "", endIcon: (buttonDialog == null ? void 0 : buttonDialog.iconPosition) != void 0 ? (buttonDialog == null ? void 0 : buttonDialog.iconPosition) == "right" ? /* @__PURE__ */ import_react19.default.createElement(ButtonIcon, { color: buttonDialog.color != void 0 ? buttonDialog.color : "primary" }) : "" : "", onClick: handleOpen }, " ", (buttonDialog == null ? void 0 : buttonDialog.text) != void 0 ? buttonDialog.text : "", " ")) : /* @__PURE__ */ import_react19.default.createElement(import_material14.IconButton, { style: { cursor: "pointer" }, onClick: handleOpen }, /* @__PURE__ */ import_react19.default.createElement(import_material14.SvgIcon, { fontSize: "small", color: (buttonDialog == null ? void 0 : buttonDialog.color) != void 0 ? buttonDialog == null ? void 0 : buttonDialog.color : "action", component: ButtonIcon }))) : "", /* @__PURE__ */ import_react19.default.createElement(import_material14.Modal, { open: open || false, onClose: handleClose }, /* @__PURE__ */ import_react19.default.createElement(
2576
+ content = content != null ? content : { component: /* @__PURE__ */ import_react20.default.createElement(import_material14.Box, null, " Aqui va el contenido ") };
2577
+ return /* @__PURE__ */ import_react20.default.createElement("div", null, buttonDialog ? /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, buttonDialog.text != void 0 ? /* @__PURE__ */ import_react20.default.createElement(import_material14.Tooltip, { placement: "bottom-start", title: buttonDialog.tooltip != void 0 ? buttonDialog.tooltip : "", slotProps: { popper: { modifiers: [{ name: "offset", options: { offset: [0, -14] } }] } } }, /* @__PURE__ */ import_react20.default.createElement(import_material14.Button, { size: "small", color: buttonDialog.color != void 0 ? buttonDialog.color : "primary", variant: (buttonDialog == null ? void 0 : buttonDialog.variant) != void 0 ? buttonDialog == null ? void 0 : buttonDialog.variant : "text", startIcon: (buttonDialog == null ? void 0 : buttonDialog.iconPosition) != void 0 ? (buttonDialog == null ? void 0 : buttonDialog.iconPosition) == "left" ? /* @__PURE__ */ import_react20.default.createElement(ButtonIcon, null) : "" : "", endIcon: (buttonDialog == null ? void 0 : buttonDialog.iconPosition) != void 0 ? (buttonDialog == null ? void 0 : buttonDialog.iconPosition) == "right" ? /* @__PURE__ */ import_react20.default.createElement(ButtonIcon, null) : "" : "", onClick: handleOpen }, " ", (buttonDialog == null ? void 0 : buttonDialog.text) != void 0 ? buttonDialog.text : "", " ")) : /* @__PURE__ */ import_react20.default.createElement(import_material14.IconButton, { style: { cursor: "pointer" }, onClick: handleOpen }, /* @__PURE__ */ import_react20.default.createElement(import_material14.SvgIcon, { fontSize: "small", color: (buttonDialog == null ? void 0 : buttonDialog.color) != void 0 ? buttonDialog == null ? void 0 : buttonDialog.color : "action", component: ButtonIcon }))) : "", /* @__PURE__ */ import_react20.default.createElement(import_material14.Modal, { open: open || false, onClose: handleClose }, /* @__PURE__ */ import_react20.default.createElement(
2315
2578
  import_material14.Dialog,
2316
2579
  {
2317
2580
  "data-testid": "dialog-element",
@@ -2325,8 +2588,8 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2325
2588
  }
2326
2589
  }
2327
2590
  },
2328
- title && /* @__PURE__ */ import_react19.default.createElement(import_material14.DialogTitle, { sx: { m: 0, padding: "8px 16px 8px 16px" }, "data-testid": "dialog-icon-title" }, /* @__PURE__ */ import_react19.default.createElement(import_Grid25.default, { container: true, size: 12, sx: { justifyContent: "space-between", flexWrap: "nowrap" } }, /* @__PURE__ */ import_react19.default.createElement(import_Grid25.default, { container: true, size: 11, sx: { alignItems: "center" } }, iconTitle ? iconTitleValidation == "image" ? /* @__PURE__ */ import_react19.default.createElement(import_material14.Box, { sx: { marginRight: "16px", width: "44px", height: "44px", borderRadius: "1px" } }, /* @__PURE__ */ import_react19.default.createElement("img", { src: IconTitle, width: "44px", height: "44px" })) : /* @__PURE__ */ import_react19.default.createElement(import_material14.SvgIcon, { color: "action", fontSize: "small", component: IconTitle, sx: { marginRight: "16px" } }) : "", /* @__PURE__ */ import_react19.default.createElement(import_Grid25.default, null, /* @__PURE__ */ import_react19.default.createElement(import_material14.Typography, { color: "text.primary", variant: "h6", gutterBottom: true }, title ? title : ""), /* @__PURE__ */ import_react19.default.createElement(import_material14.Typography, { color: "text.secondary", variant: "body2", gutterBottom: true }, subtitle ? subtitle : ""))), disableClose != true ? /* @__PURE__ */ import_react19.default.createElement(import_material14.IconButton, { "data-testid": "close-dialog-button", onClick: handleClose, size: "small", color: "default", sx: { height: 22, width: 22 } }, /* @__PURE__ */ import_react19.default.createElement(import_Close2.default, null)) : "")),
2329
- /* @__PURE__ */ import_react19.default.createElement(
2591
+ title && /* @__PURE__ */ import_react20.default.createElement(import_material14.DialogTitle, { sx: { m: 0, padding: "8px 16px 8px 16px" }, "data-testid": "dialog-icon-title" }, /* @__PURE__ */ import_react20.default.createElement(import_Grid25.default, { container: true, size: 12, sx: { justifyContent: "space-between", flexWrap: "nowrap" } }, /* @__PURE__ */ import_react20.default.createElement(import_Grid25.default, { container: true, size: 11, sx: { alignItems: "center" } }, iconTitle ? iconTitleValidation == "image" ? /* @__PURE__ */ import_react20.default.createElement(import_material14.Box, { sx: { marginRight: "16px", width: "44px", height: "44px", borderRadius: "1px" } }, /* @__PURE__ */ import_react20.default.createElement("img", { src: IconTitle, width: "44px", height: "44px" })) : /* @__PURE__ */ import_react20.default.createElement(import_material14.SvgIcon, { color: "action", fontSize: "small", component: IconTitle, sx: { marginRight: "16px" } }) : "", /* @__PURE__ */ import_react20.default.createElement(import_Grid25.default, null, /* @__PURE__ */ import_react20.default.createElement(import_material14.Typography, { color: "text.primary", variant: "h6", gutterBottom: true }, title ? title : ""), /* @__PURE__ */ import_react20.default.createElement(import_material14.Typography, { color: "text.secondary", variant: "body2", gutterBottom: true }, subtitle ? subtitle : ""))), disableClose != true ? /* @__PURE__ */ import_react20.default.createElement(import_material14.IconButton, { "data-testid": "close-dialog-button", onClick: handleClose, size: "small", color: "default", sx: { height: 22, width: 22 } }, /* @__PURE__ */ import_react20.default.createElement(import_Close2.default, null)) : "")),
2592
+ /* @__PURE__ */ import_react20.default.createElement(
2330
2593
  import_material14.DialogContent,
2331
2594
  {
2332
2595
  "data-testid": "dialog-content",
@@ -2354,7 +2617,7 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2354
2617
  }
2355
2618
  }
2356
2619
  },
2357
- content.url ? /* @__PURE__ */ import_react19.default.createElement(
2620
+ content.url ? /* @__PURE__ */ import_react20.default.createElement(
2358
2621
  "iframe",
2359
2622
  {
2360
2623
  style: { border: "none", minWidth: "100%", minHeight: "100%" },
@@ -2364,7 +2627,7 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2364
2627
  }
2365
2628
  ) : content.component
2366
2629
  ),
2367
- dialogActions.length > 0 ? /* @__PURE__ */ import_react19.default.createElement(import_material14.DialogActions, { sx: { gap: 1, m: 0, padding: "12px 16px 12px 16px", justifyContent: dialogActions.length >= 3 ? "space-between" : "flex-end" } }, dialogActions.length >= 3 ? /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
2630
+ dialogActions.length > 0 ? /* @__PURE__ */ import_react20.default.createElement(import_material14.DialogActions, { sx: { gap: 1, m: 0, padding: "12px 16px 12px 16px", justifyContent: dialogActions.length >= 3 ? "space-between" : "flex-end" } }, dialogActions.length >= 3 ? /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
2368
2631
  import_material14.Button,
2369
2632
  {
2370
2633
  variant: "text",
@@ -2372,11 +2635,11 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2372
2635
  size: "small",
2373
2636
  onClick: dialogActions[0].fn,
2374
2637
  disabled: dialogActions[0].disabled || false,
2375
- startIcon: dialogActions[0].icon ? /* @__PURE__ */ import_react19.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: dialogActions[0].icon }) : void 0
2638
+ startIcon: dialogActions[0].icon ? /* @__PURE__ */ import_react20.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: dialogActions[0].icon }) : void 0
2376
2639
  },
2377
2640
  dialogActions[0].text
2378
- ), /* @__PURE__ */ import_react19.default.createElement(import_material14.Box, { sx: { display: "flex", gap: 1 } }, dialogActions.slice(1).map((boton, index) => {
2379
- return /* @__PURE__ */ import_react19.default.createElement(
2641
+ ), /* @__PURE__ */ import_react20.default.createElement(import_material14.Box, { sx: { display: "flex", gap: 1 } }, dialogActions.slice(1).map((boton, index) => {
2642
+ return /* @__PURE__ */ import_react20.default.createElement(
2380
2643
  import_material14.Button,
2381
2644
  {
2382
2645
  key: index + 1,
@@ -2385,12 +2648,12 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2385
2648
  size: "small",
2386
2649
  onClick: boton.fn,
2387
2650
  disabled: boton.disabled || false,
2388
- startIcon: boton.icon ? /* @__PURE__ */ import_react19.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: boton.icon }) : void 0
2651
+ startIcon: boton.icon ? /* @__PURE__ */ import_react20.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: boton.icon }) : void 0
2389
2652
  },
2390
2653
  boton.text
2391
2654
  );
2392
2655
  }))) : dialogActions.map((boton, index) => {
2393
- return /* @__PURE__ */ import_react19.default.createElement(
2656
+ return /* @__PURE__ */ import_react20.default.createElement(
2394
2657
  import_material14.Button,
2395
2658
  {
2396
2659
  key: index,
@@ -2399,7 +2662,7 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2399
2662
  size: "small",
2400
2663
  onClick: boton.fn,
2401
2664
  disabled: boton.disabled || false,
2402
- startIcon: boton.icon ? /* @__PURE__ */ import_react19.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: boton.icon }) : void 0
2665
+ startIcon: boton.icon ? /* @__PURE__ */ import_react20.default.createElement(import_material14.SvgIcon, { fontSize: "small", component: boton.icon }) : void 0
2403
2666
  },
2404
2667
  boton.text
2405
2668
  );
@@ -2408,12 +2671,12 @@ var SCDialog = ({ title, iconTitle, subtitle, content, actions, buttonDialog, di
2408
2671
  };
2409
2672
 
2410
2673
  // src/Components/SCMenu.tsx
2411
- var import_react21 = __toESM(require("react"), 1);
2674
+ var import_react22 = __toESM(require("react"), 1);
2412
2675
  var import_material15 = require("@mui/material");
2413
2676
  var import_Grid26 = __toESM(require("@mui/material/Grid2"), 1);
2414
2677
 
2415
2678
  // src/Components/Hooks/useWindowDimensions.ts
2416
- var import_react20 = require("react");
2679
+ var import_react21 = require("react");
2417
2680
  function getWindowDimensions() {
2418
2681
  const { innerWidth: width, innerHeight: height } = window;
2419
2682
  return {
@@ -2422,8 +2685,8 @@ function getWindowDimensions() {
2422
2685
  };
2423
2686
  }
2424
2687
  function useWindowDimensions() {
2425
- const [windowDimensions, setWindowDimensions] = (0, import_react20.useState)(getWindowDimensions());
2426
- (0, import_react20.useEffect)(() => {
2688
+ const [windowDimensions, setWindowDimensions] = (0, import_react21.useState)(getWindowDimensions());
2689
+ (0, import_react21.useEffect)(() => {
2427
2690
  function handleResize() {
2428
2691
  setWindowDimensions(getWindowDimensions());
2429
2692
  }
@@ -2441,12 +2704,12 @@ var SCMenu = ({ header, options, defaultOption, disable, widthMenu, heightMenu,
2441
2704
  const pageSize = widthPage ? parseInt(widthPage) : width - menuSize;
2442
2705
  const widthContainer = menuSize + pageSize;
2443
2706
  let heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;
2444
- const [selectedIndex, setSelectedIndex] = import_react21.default.useState("1");
2445
- const [value, setValue] = import_react21.default.useState("1");
2446
- import_react21.default.useEffect(() => {
2707
+ const [selectedIndex, setSelectedIndex] = import_react22.default.useState("1");
2708
+ const [value, setValue] = import_react22.default.useState("1");
2709
+ import_react22.default.useEffect(() => {
2447
2710
  heightContainer = heightMenu ? parseInt(heightMenu) : height - 76;
2448
2711
  }, [height]);
2449
- import_react21.default.useEffect(() => {
2712
+ import_react22.default.useEffect(() => {
2450
2713
  if (defaultOption) {
2451
2714
  handleClickMenusItem(event, void 0);
2452
2715
  }
@@ -2476,7 +2739,7 @@ var SCMenu = ({ header, options, defaultOption, disable, widthMenu, heightMenu,
2476
2739
  setValue(String(index + 1));
2477
2740
  }
2478
2741
  };
2479
- return /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(import_Grid26.default, { container: true, sx: { height: heightContainer, width: widthContainer, flexDirection: "column" } }, /* @__PURE__ */ import_react21.default.createElement(import_material15.Paper, { "data-testid": "menu-content", sx: { width: menuSize, height: heightContainer, overflow: "auto" } }, header && header.component, /* @__PURE__ */ import_react21.default.createElement(import_material15.MenuList, { sx: { height: options.length * 45, padding: "8px 0px" } }, options.map((option, index) => /* @__PURE__ */ import_react21.default.createElement(import_react21.default.Fragment, null, /* @__PURE__ */ import_react21.default.createElement(
2742
+ return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(import_Grid26.default, { container: true, sx: { height: heightContainer, width: widthContainer, flexDirection: "column" } }, /* @__PURE__ */ import_react22.default.createElement(import_material15.Paper, { "data-testid": "menu-content", sx: { width: menuSize, height: heightContainer, overflow: "auto" } }, header && header.component, /* @__PURE__ */ import_react22.default.createElement(import_material15.MenuList, { sx: { height: options.length * 45, padding: "8px 0px" } }, options.map((option, index) => /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
2480
2743
  import_material15.MenuItem,
2481
2744
  {
2482
2745
  disabled: disable == true ? true : false,
@@ -2484,26 +2747,26 @@ var SCMenu = ({ header, options, defaultOption, disable, widthMenu, heightMenu,
2484
2747
  selected: String(index + 1) === selectedIndex,
2485
2748
  onClick: (event2) => handleClickMenusItem(event2, index)
2486
2749
  },
2487
- option.iconLeft ? /* @__PURE__ */ import_react21.default.createElement(import_material15.ListItemIcon, { sx: { color: String(index + 1) === selectedIndex ? "primary" : "active" } }, /* @__PURE__ */ import_react21.default.createElement(import_material15.SvgIcon, { fontSize: "small", color: String(index + 1) === selectedIndex ? "primary" : "action", component: option.iconLeft })) : "",
2488
- /* @__PURE__ */ import_react21.default.createElement(import_Grid26.default, { container: true, size: 12, sx: { maxWidth: 220, flexWrap: "noWrap", alignItems: "center" } }, /* @__PURE__ */ import_react21.default.createElement(import_material15.Typography, { noWrap: true, variant: "caption", color: String(index + 1) === selectedIndex ? "primary" : "active" }, option.name), option.iconRight ? /* @__PURE__ */ import_react21.default.createElement(import_material15.ListItemIcon, { sx: { minWidth: "0px !important", color: String(index + 1) === selectedIndex ? "primary" : "active" } }, /* @__PURE__ */ import_react21.default.createElement(import_material15.SvgIcon, { fontSize: "small", color: String(index + 1) === selectedIndex ? "primary" : "action", component: option.iconRight })) : "")
2489
- ), option.divider == true ? /* @__PURE__ */ import_react21.default.createElement(import_material15.Divider, null) : "")))), /* @__PURE__ */ import_react21.default.createElement(import_Grid26.default, { container: true }, options.map((option, index) => option.page ? String(index + 1) == value ? /* @__PURE__ */ import_react21.default.createElement(import_material15.Box, { "data-testid": "menu-page-content", sx: { padding: "16px", width: pageSize, height: heightContainer }, key: index }, option.page) : "" : /* @__PURE__ */ import_react21.default.createElement(import_material15.Typography, { color: "error" }, "No se ha configurado el componente a visualizar")))));
2750
+ option.iconLeft ? /* @__PURE__ */ import_react22.default.createElement(import_material15.ListItemIcon, { sx: { color: String(index + 1) === selectedIndex ? "primary" : "active" } }, /* @__PURE__ */ import_react22.default.createElement(import_material15.SvgIcon, { fontSize: "small", color: String(index + 1) === selectedIndex ? "primary" : "action", component: option.iconLeft })) : "",
2751
+ /* @__PURE__ */ import_react22.default.createElement(import_Grid26.default, { container: true, size: 12, sx: { maxWidth: 220, flexWrap: "noWrap", alignItems: "center" } }, /* @__PURE__ */ import_react22.default.createElement(import_material15.Typography, { noWrap: true, variant: "caption", color: String(index + 1) === selectedIndex ? "primary" : "active" }, option.name), option.iconRight ? /* @__PURE__ */ import_react22.default.createElement(import_material15.ListItemIcon, { sx: { minWidth: "0px !important", color: String(index + 1) === selectedIndex ? "primary" : "active" } }, /* @__PURE__ */ import_react22.default.createElement(import_material15.SvgIcon, { fontSize: "small", color: String(index + 1) === selectedIndex ? "primary" : "action", component: option.iconRight })) : "")
2752
+ ), option.divider == true ? /* @__PURE__ */ import_react22.default.createElement(import_material15.Divider, null) : "")))), /* @__PURE__ */ import_react22.default.createElement(import_Grid26.default, { container: true }, options.map((option, index) => option.page ? String(index + 1) == value ? /* @__PURE__ */ import_react22.default.createElement(import_material15.Box, { "data-testid": "menu-page-content", sx: { padding: "16px", width: pageSize, height: heightContainer }, key: index }, option.page) : "" : /* @__PURE__ */ import_react22.default.createElement(import_material15.Typography, { color: "error" }, "No se ha configurado el componente a visualizar")))));
2490
2753
  };
2491
2754
 
2492
2755
  // src/Components/SCTabs.tsx
2493
- var import_react22 = __toESM(require("react"), 1);
2756
+ var import_react23 = __toESM(require("react"), 1);
2494
2757
  var import_material16 = require("@mui/material");
2495
2758
  var import_TabPanel = __toESM(require("@mui/lab/TabPanel"), 1);
2496
2759
  var import_TabContext = __toESM(require("@mui/lab/TabContext"), 1);
2497
2760
  var Muicon7 = __toESM(require("@mui/icons-material"), 1);
2498
2761
  var SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colorTab, orientation, variant, scrollButtons, children }) => {
2499
- const [toast, setToast] = import_react22.default.useState(null);
2762
+ const [toast, setToast] = import_react23.default.useState(null);
2500
2763
  let i = 0;
2501
2764
  let j = 0;
2502
2765
  let k = 0;
2503
2766
  let l = 0;
2504
2767
  let validateTypeIcon = true;
2505
- const [value, setValue] = import_react22.default.useState("1");
2506
- (0, import_react22.useEffect)(() => {
2768
+ const [value, setValue] = import_react23.default.useState("1");
2769
+ (0, import_react23.useEffect)(() => {
2507
2770
  if (defaultOption) {
2508
2771
  handleChange(event, void 0);
2509
2772
  }
@@ -2553,7 +2816,7 @@ var SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colo
2553
2816
  setValue(newValue);
2554
2817
  }
2555
2818
  };
2556
- return /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, validateTypeIcon == true ? /* @__PURE__ */ import_react22.default.createElement(import_material16.Box, { sx: { height: orientation == "vertical" ? "100%" : "auto", display: "flex", flexDirection: orientation == "vertical" ? "row" : "column" }, id: "tabsitos" }, /* @__PURE__ */ import_react22.default.createElement(import_TabContext.default, { value }, /* @__PURE__ */ import_react22.default.createElement(
2819
+ return /* @__PURE__ */ import_react23.default.createElement(import_react23.default.Fragment, null, validateTypeIcon == true ? /* @__PURE__ */ import_react23.default.createElement(import_material16.Box, { sx: { height: orientation == "vertical" ? "100%" : "auto", display: "flex", flexDirection: orientation == "vertical" ? "row" : "column" }, id: "tabsitos" }, /* @__PURE__ */ import_react23.default.createElement(import_TabContext.default, { value }, /* @__PURE__ */ import_react23.default.createElement(
2557
2820
  import_material16.Tabs,
2558
2821
  {
2559
2822
  "data-testid": "tab-container",
@@ -2567,7 +2830,7 @@ var SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colo
2567
2830
  orientation: orientation || "horizontal",
2568
2831
  sx: { borderBottom: orientation == "vertical" ? 0 : 1, borderRight: orientation == "vertical" ? 1 : 0, borderColor: "divider", background: background || "" }
2569
2832
  },
2570
- options.map((option) => /* @__PURE__ */ import_react22.default.createElement(
2833
+ options.map((option) => /* @__PURE__ */ import_react23.default.createElement(
2571
2834
  import_material16.Tab,
2572
2835
  {
2573
2836
  "data-testid": "tab-item",
@@ -2576,7 +2839,7 @@ var SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colo
2576
2839
  label: option.name || "",
2577
2840
  disabled: option.disabled || false,
2578
2841
  iconPosition: iconPosition || "end",
2579
- icon: typeIcon == "badge" ? /* @__PURE__ */ import_react22.default.createElement(
2842
+ icon: typeIcon == "badge" ? /* @__PURE__ */ import_react23.default.createElement(
2580
2843
  import_material16.Badge,
2581
2844
  {
2582
2845
  sx: {
@@ -2591,27 +2854,842 @@ var SCTabs = ({ options, defaultOption, typeIcon, background, iconPosition, colo
2591
2854
  badgeContent: option.iconOrBadge,
2592
2855
  color: value == String(i) ? colorTab ? colorTab : "primary" : "default"
2593
2856
  }
2594
- ) : typeIcon == "icon" ? /* @__PURE__ */ import_react22.default.createElement(import_material16.SvgIcon, { fontSize: "small", component: option.iconOrBadge, color: value == String(i) ? colorTab ? colorTab : "primary" : "action", sx: { width: "20px", height: "20px" } }) : "",
2857
+ ) : typeIcon == "icon" ? /* @__PURE__ */ import_react23.default.createElement(import_material16.SvgIcon, { fontSize: "small", component: option.iconOrBadge, color: value == String(i) ? colorTab ? colorTab : "primary" : "action", sx: { width: "20px", height: "20px" } }) : "",
2595
2858
  sx: { "& .MuiTab-icon": { margin: "0px !important" }, padding: "10px 16px", gap: "4px" }
2596
2859
  }
2597
2860
  ))
2598
- ), children, options.map((option) => /* @__PURE__ */ import_react22.default.createElement(
2861
+ ), children, options.map((option) => /* @__PURE__ */ import_react23.default.createElement(
2599
2862
  import_TabPanel.default,
2600
2863
  {
2601
2864
  key: k = k + 1,
2602
2865
  value: String(l = l + 1),
2603
2866
  sx: { padding: "16px" }
2604
2867
  },
2605
- option.page ? option.page : /* @__PURE__ */ import_react22.default.createElement(import_material16.Typography, null, "No se ha configurado el componente a visualizar ")
2606
- )))) : /* @__PURE__ */ import_react22.default.createElement(import_material16.Box, { sx: { height: "200px" } }, toast && /* @__PURE__ */ import_react22.default.createElement(SCToastNotification, __spreadValues({ "data-testid": "error-tab-message" }, toast))));
2868
+ option.page ? option.page : /* @__PURE__ */ import_react23.default.createElement(import_material16.Typography, null, "No se ha configurado el componente a visualizar ")
2869
+ )))) : /* @__PURE__ */ import_react23.default.createElement(import_material16.Box, { sx: { height: "200px" } }, toast && /* @__PURE__ */ import_react23.default.createElement(SCToastNotification, __spreadValues({ "data-testid": "error-tab-message" }, toast))));
2870
+ };
2871
+
2872
+ // src/Components/Calendario/Calendar.tsx
2873
+ var import_react29 = __toESM(require("react"), 1);
2874
+ var import_material22 = require("@mui/material");
2875
+
2876
+ // src/Components/Calendario/CalendarToolbar.tsx
2877
+ var import_react24 = __toESM(require("react"), 1);
2878
+ var import_icons_material10 = require("@mui/icons-material");
2879
+ var import_material17 = require("@mui/material");
2880
+ var import_dayjs2 = __toESM(require("dayjs"), 1);
2881
+ var import_updateLocale = __toESM(require("dayjs/plugin/updateLocale"), 1);
2882
+ var import_es2 = require("dayjs/locale/es");
2883
+ import_dayjs2.default.locale("es");
2884
+ import_dayjs2.default.extend(import_updateLocale.default);
2885
+ import_dayjs2.default.updateLocale("en", {
2886
+ weekStart: 0
2887
+ // 0 = domingo
2888
+ });
2889
+ var CalendarToolbar = ({
2890
+ labelDate,
2891
+ view,
2892
+ onView,
2893
+ onNavigate,
2894
+ children
2895
+ }) => {
2896
+ const [anchorEl, setAnchorEl] = (0, import_react24.useState)(null);
2897
+ const open = Boolean(anchorEl);
2898
+ const handleMenuOpen = (event2) => {
2899
+ setAnchorEl(event2.currentTarget);
2900
+ };
2901
+ const handleMenuClose = () => {
2902
+ setAnchorEl(null);
2903
+ };
2904
+ const handleViewChange = (newView) => {
2905
+ onView(newView);
2906
+ handleMenuClose();
2907
+ };
2908
+ const getFormattedDate = () => {
2909
+ const sunday = labelDate.day(0);
2910
+ const saturday = sunday.add(6, "day");
2911
+ if (view === "month") {
2912
+ const textMonth = labelDate.format("MMMM YYYY");
2913
+ return textMonth.charAt(0).toUpperCase() + textMonth.slice(1);
2914
+ }
2915
+ if (view === "week") {
2916
+ return `${labelDate.startOf("week").format("DD MMM")} - ${labelDate.endOf("week").format("DD MMM YYYY")}`;
2917
+ }
2918
+ return labelDate.format(" DD MMMM YYYY");
2919
+ };
2920
+ return /* @__PURE__ */ import_react24.default.createElement(import_material17.Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, px: 1, py: 0.5 }, /* @__PURE__ */ import_react24.default.createElement(import_material17.Box, null, /* @__PURE__ */ import_react24.default.createElement(
2921
+ import_material17.Chip,
2922
+ {
2923
+ label: "Hoy",
2924
+ icon: /* @__PURE__ */ import_react24.default.createElement(import_icons_material10.LightModeOutlined, { fontSize: "small" }),
2925
+ color: "primary",
2926
+ onClick: () => onNavigate("TODAY")
2927
+ }
2928
+ )), /* @__PURE__ */ import_react24.default.createElement(import_material17.Stack, { direction: "row", alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react24.default.createElement(import_material17.IconButton, { "aria-label": "Anterior", onClick: () => onNavigate("PREV"), size: "small", color: "primary" }, /* @__PURE__ */ import_react24.default.createElement(import_icons_material10.ChevronLeft, { fontSize: "small" })), /* @__PURE__ */ import_react24.default.createElement(import_material17.IconButton, { "aria-label": "Siguiente", onClick: () => onNavigate("NEXT"), size: "small", color: "primary" }, /* @__PURE__ */ import_react24.default.createElement(import_icons_material10.ChevronRight, { fontSize: "small" })), /* @__PURE__ */ import_react24.default.createElement(import_material17.Typography, { variant: "h6", color: "primary", "data-testid": "currentDate" }, getFormattedDate()), /* @__PURE__ */ import_react24.default.createElement(import_material17.IconButton, { onClick: handleMenuOpen, size: "small", color: "primary", "aria-label": "Cambiar vista" }, /* @__PURE__ */ import_react24.default.createElement(import_icons_material10.KeyboardArrowDown, { fontSize: "small" })), /* @__PURE__ */ import_react24.default.createElement(
2929
+ import_material17.Menu,
2930
+ {
2931
+ anchorEl,
2932
+ open,
2933
+ onClose: handleMenuClose,
2934
+ anchorOrigin: { vertical: "bottom", horizontal: "center" },
2935
+ transformOrigin: { vertical: "top", horizontal: "center" }
2936
+ },
2937
+ /* @__PURE__ */ import_react24.default.createElement(import_material17.MenuItem, { onClick: () => handleViewChange("month") }, "Mes"),
2938
+ /* @__PURE__ */ import_react24.default.createElement(import_material17.MenuItem, { onClick: () => handleViewChange("week") }, "Semana"),
2939
+ /* @__PURE__ */ import_react24.default.createElement(import_material17.MenuItem, { onClick: () => handleViewChange("day") }, "D\xEDa")
2940
+ )), children ? /* @__PURE__ */ import_react24.default.createElement(import_material17.Box, null, children) : /* @__PURE__ */ import_react24.default.createElement(import_material17.Box, { width: "24px" }), " ");
2941
+ };
2942
+
2943
+ // src/Components/Calendario/Views/MonthView.tsx
2944
+ var import_react26 = __toESM(require("react"), 1);
2945
+ var import_material19 = require("@mui/material");
2946
+ var import_Add = __toESM(require("@mui/icons-material/Add"), 1);
2947
+ var import_dayjs4 = __toESM(require("dayjs"), 1);
2948
+ var import_localeData = __toESM(require("dayjs/plugin/localeData"), 1);
2949
+ var import_isBetween = __toESM(require("dayjs/plugin/isBetween"), 1);
2950
+
2951
+ // src/Components/Calendario/Utils.tsx
2952
+ var import_dayjs3 = __toESM(require("dayjs"), 1);
2953
+ function getMonthDays(date) {
2954
+ const start = date.startOf("month").day(0);
2955
+ const end = date.endOf("month").day(6);
2956
+ const days = [];
2957
+ let current = start;
2958
+ while (current.isBefore(end) || current.isSame(end, "day")) {
2959
+ days.push(current);
2960
+ current = current.add(1, "day");
2961
+ }
2962
+ return days;
2963
+ }
2964
+ var isToday = (date) => {
2965
+ return date.isSame((0, import_dayjs3.default)(), "day");
2966
+ };
2967
+ var stateColors = {
2968
+ Asignada: "warning.main",
2969
+ Finalizado: "primary.main",
2970
+ Vencida: "error.main",
2971
+ EnProgreso: "success.main",
2972
+ Aplazada: "grey.400",
2973
+ Generada: "secondary.main"
2974
+ };
2975
+
2976
+ // src/Components/Calendario/Event.tsx
2977
+ var import_react25 = __toESM(require("react"), 1);
2978
+ var import_material18 = require("@mui/material");
2979
+ var CalendarEventCard = ({ event: event2, color, sx, onClick, onHover }) => {
2980
+ const [anchorEl, setAnchorEl] = import_react25.default.useState(null);
2981
+ const handlePopoverOpen = (event3) => {
2982
+ setAnchorEl(event3.currentTarget);
2983
+ };
2984
+ const handlePopoverClose = () => {
2985
+ setAnchorEl(null);
2986
+ };
2987
+ const open = Boolean(anchorEl);
2988
+ return /* @__PURE__ */ import_react25.default.createElement(
2989
+ import_material18.Stack,
2990
+ {
2991
+ direction: "row",
2992
+ padding: 0.5,
2993
+ borderRadius: 0.5,
2994
+ alignItems: "flex-start",
2995
+ minHeight: "20px",
2996
+ onMouseOver: () => onHover == null ? void 0 : onHover(event2),
2997
+ onClick: (e) => {
2998
+ e.stopPropagation();
2999
+ onClick == null ? void 0 : onClick(event2);
3000
+ },
3001
+ sx: (theme) => __spreadValues({
3002
+ backgroundColor: theme.palette.common.white,
3003
+ boxShadow: theme.shadows[2],
3004
+ color: theme.palette.text.secondary,
3005
+ overflow: "hidden",
3006
+ cursor: onClick ? "pointer" : "default"
3007
+ }, sx)
3008
+ },
3009
+ /* @__PURE__ */ import_react25.default.createElement(
3010
+ import_material18.Divider,
3011
+ {
3012
+ orientation: "vertical",
3013
+ flexItem: true,
3014
+ sx: {
3015
+ width: "2px",
3016
+ backgroundColor: color != null ? color : "primary.main",
3017
+ borderRadius: "2px"
3018
+ }
3019
+ }
3020
+ ),
3021
+ /* @__PURE__ */ import_react25.default.createElement(
3022
+ import_material18.Box,
3023
+ {
3024
+ px: 1,
3025
+ py: 0.5,
3026
+ flex: "1",
3027
+ minWidth: 0,
3028
+ display: "flex",
3029
+ alignItems: "center"
3030
+ },
3031
+ /* @__PURE__ */ import_react25.default.createElement(
3032
+ import_material18.Typography,
3033
+ {
3034
+ color: "text.primary",
3035
+ variant: "caption",
3036
+ noWrap: true,
3037
+ sx: {
3038
+ overflow: "hidden",
3039
+ textOverflow: "ellipsis",
3040
+ whiteSpace: "nowrap"
3041
+ },
3042
+ onMouseEnter: handlePopoverOpen,
3043
+ onMouseLeave: handlePopoverClose
3044
+ },
3045
+ capitalize(event2.title)
3046
+ ),
3047
+ /* @__PURE__ */ import_react25.default.createElement(
3048
+ import_material18.Popover,
3049
+ {
3050
+ id: "mouse-over-popover",
3051
+ sx: { pointerEvents: "none" },
3052
+ open,
3053
+ anchorEl,
3054
+ anchorOrigin: {
3055
+ vertical: "top",
3056
+ horizontal: "right"
3057
+ },
3058
+ transformOrigin: {
3059
+ vertical: "bottom",
3060
+ horizontal: "right"
3061
+ },
3062
+ onClose: handlePopoverClose,
3063
+ disableRestoreFocus: true
3064
+ },
3065
+ onHover ? onHover(event2) : /* @__PURE__ */ import_react25.default.createElement(import_material18.Typography, null, "Sin contenido")
3066
+ )
3067
+ )
3068
+ );
3069
+ };
3070
+
3071
+ // src/assets/Icon Scheduler.svg
3072
+ var Icon_Scheduler_default = "./Icon Scheduler-WX62PISD.svg";
3073
+
3074
+ // src/Components/Calendario/Views/MonthView.tsx
3075
+ import_dayjs4.default.extend(import_localeData.default);
3076
+ import_dayjs4.default.extend(import_isBetween.default);
3077
+ var MonthView = ({ events, isLoading, onDayClick, onMoreClick, currentDate, onEventClick, onEventHover }) => {
3078
+ const noEvents = events.length === 0;
3079
+ const days = getMonthDays(currentDate);
3080
+ const weekDays = Array.from({ length: 7 }, (_, i) => (0, import_dayjs4.default)().day(i));
3081
+ const [openDrawer, setOpenDrawer] = import_react26.default.useState(false);
3082
+ const [selectedDay, setSelectedDay] = import_react26.default.useState(null);
3083
+ const [selectedEvents, setSelectedEvents] = import_react26.default.useState([]);
3084
+ return /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { width: "100%", sx: { overflowX: "auto" } }, /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { minWidth: "1050px" }, /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "grid", gridTemplateColumns: "repeat(7, minmax(150px, 1fr))", gap: 0.5, mb: 1 }, weekDays.map((day) => /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { key: day.day(), textAlign: "center", py: 0.5 }, /* @__PURE__ */ import_react26.default.createElement(import_material19.Typography, { variant: "caption", color: "text.secondary" }, day.format("dddd"))))), isLoading ? /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "flex", alignItems: "center", justifyContent: "center", width: "100%", height: "450px" }, /* @__PURE__ */ import_react26.default.createElement(import_material19.CircularProgress, { sx: { width: "60px", height: "60px" }, variant: "indeterminate" })) : !isLoading && noEvents ? /* @__PURE__ */ import_react26.default.createElement(
3085
+ EmptyState,
3086
+ {
3087
+ title: "Inicia la gesti\xF3n de las actividades",
3088
+ subtitle: "Selecciona un mec\xE1nico y as\xEDgnale las actividades a realizar.",
3089
+ icon: /* @__PURE__ */ import_react26.default.createElement("img", { src: Icon_Scheduler_default, alt: "icon_calendario", style: { width: 60, height: 60 } })
3090
+ }
3091
+ ) : /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "grid", gridTemplateColumns: "repeat(7, minmax(150px, 1fr))", gap: 0.5 }, days.map((day) => {
3092
+ const dayEvents = events.filter(
3093
+ (e) => day.isBetween(e.start.startOf("day"), e.end.endOf("day"), null, "[]")
3094
+ );
3095
+ const isCurrentMonth = day.month() === currentDate.month();
3096
+ return /* @__PURE__ */ import_react26.default.createElement(
3097
+ import_material19.Paper,
3098
+ {
3099
+ key: day.toString(),
3100
+ onClick: () => onDayClick == null ? void 0 : onDayClick(day),
3101
+ sx: {
3102
+ minHeight: 120,
3103
+ display: "flex",
3104
+ flexDirection: "column",
3105
+ justifyContent: "space-between",
3106
+ boxShadow: "none",
3107
+ bgcolor: isCurrentMonth ? "grey.50" : "background.default",
3108
+ cursor: "pointer",
3109
+ "&:hover": { bgcolor: "primary.50" },
3110
+ overflow: "hidden"
3111
+ }
3112
+ },
3113
+ /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { p: 1, flexShrink: 0 }, /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "flex", alignItems: "center", justifyContent: "flex-start" }, /* @__PURE__ */ import_react26.default.createElement(
3114
+ import_material19.Box,
3115
+ {
3116
+ sx: {
3117
+ width: 24,
3118
+ height: 24,
3119
+ borderRadius: "50%",
3120
+ backgroundColor: isToday(day) ? "primary.main" : void 0,
3121
+ display: "flex",
3122
+ alignItems: "center",
3123
+ justifyContent: "center"
3124
+ }
3125
+ },
3126
+ /* @__PURE__ */ import_react26.default.createElement(
3127
+ import_material19.Typography,
3128
+ {
3129
+ variant: "body2",
3130
+ sx: { color: isToday(day) ? "white" : "text.secondary" }
3131
+ },
3132
+ day.date()
3133
+ )
3134
+ ), dayEvents.length > 2 && /* @__PURE__ */ import_react26.default.createElement(import_material19.Tooltip, { title: "M\xE1s eventos" }, /* @__PURE__ */ import_react26.default.createElement(
3135
+ import_material19.IconButton,
3136
+ {
3137
+ color: "primary",
3138
+ size: "small",
3139
+ onClick: (e) => {
3140
+ e.stopPropagation();
3141
+ onMoreClick == null ? void 0 : onMoreClick(day, dayEvents);
3142
+ setSelectedDay(day);
3143
+ setSelectedEvents(dayEvents);
3144
+ }
3145
+ },
3146
+ /* @__PURE__ */ import_react26.default.createElement(import_Add.default, { fontSize: "small" })
3147
+ )))),
3148
+ /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "flex", flexDirection: "column", gap: 0.5, p: 1, pt: 0, overflow: "hidden" }, dayEvents.slice(0, 2).map((event2) => /* @__PURE__ */ import_react26.default.createElement(
3149
+ CalendarEventCard,
3150
+ {
3151
+ key: `${event2.id}-${day.toString()}`,
3152
+ event: event2,
3153
+ color: stateColors[event2.state],
3154
+ onClick: () => onEventClick == null ? void 0 : onEventClick(event2, day),
3155
+ onHover: onEventHover
3156
+ }
3157
+ ))),
3158
+ dayEvents.length > 2 && /* @__PURE__ */ import_react26.default.createElement(import_material19.Stack, { justifyContent: "flex-end", px: 1, pb: 0.5, onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react26.default.createElement(
3159
+ SCDrawer,
3160
+ {
3161
+ width: "350px",
3162
+ title: day.format("DD [de] MMMM YYYY"),
3163
+ open: openDrawer,
3164
+ buttonDrawer: { text: `+ ${dayEvents.length}` },
3165
+ anchor: "right",
3166
+ actions: false,
3167
+ arrayElements: [{
3168
+ component: (() => {
3169
+ const [first, ...rest] = dayEvents;
3170
+ return /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { display: "flex", width: "100%", flexDirection: "column", height: "100%", pr: 1.5 }, /* @__PURE__ */ import_react26.default.createElement(import_material19.Typography, { width: "100%", color: "text.secondary" }, " Proximo evento "), first && /* @__PURE__ */ import_react26.default.createElement(import_material19.Box, { p: 1, pb: 1, width: "100%" }, /* @__PURE__ */ import_react26.default.createElement(
3171
+ CalendarEventCard,
3172
+ {
3173
+ event: first,
3174
+ color: stateColors[first.state],
3175
+ onClick: () => onEventClick == null ? void 0 : onEventClick(first, day),
3176
+ sx: {
3177
+ whiteSpace: "normal",
3178
+ "& .MuiTypography-root": {
3179
+ whiteSpace: "normal",
3180
+ overflow: "visible",
3181
+ textOverflow: "unset"
3182
+ }
3183
+ }
3184
+ }
3185
+ )), /* @__PURE__ */ import_react26.default.createElement(import_material19.Divider, { flexItem: true, sx: { width: "100%" } }), /* @__PURE__ */ import_react26.default.createElement(import_material19.Typography, { width: "100%", py: 1, color: "text.secondary" }, " Eventos restantes "), /* @__PURE__ */ import_react26.default.createElement(
3186
+ import_material19.Box,
3187
+ {
3188
+ width: "100%",
3189
+ height: "100%",
3190
+ flex: 1,
3191
+ overflow: "auto",
3192
+ p: 1,
3193
+ pt: 1,
3194
+ display: "flex",
3195
+ flexDirection: "column",
3196
+ gap: 1.5
3197
+ },
3198
+ rest.map((event2) => /* @__PURE__ */ import_react26.default.createElement(
3199
+ CalendarEventCard,
3200
+ {
3201
+ key: `${event2.id}-${day.toString()}`,
3202
+ event: event2,
3203
+ color: stateColors[event2.state],
3204
+ onClick: () => onEventClick == null ? void 0 : onEventClick(event2, day),
3205
+ onHover: onEventHover,
3206
+ sx: {
3207
+ whiteSpace: "normal",
3208
+ "& .MuiTypography-root": {
3209
+ whiteSpace: "normal",
3210
+ overflow: "visible",
3211
+ textOverflow: "unset"
3212
+ }
3213
+ }
3214
+ }
3215
+ ))
3216
+ ));
3217
+ })()
3218
+ }]
3219
+ }
3220
+ ))
3221
+ );
3222
+ }))));
3223
+ };
3224
+
3225
+ // src/Components/Calendario/Views/WeekView.tsx
3226
+ var import_react27 = __toESM(require("react"), 1);
3227
+ var import_material20 = require("@mui/material");
3228
+ var import_dayjs5 = __toESM(require("dayjs"), 1);
3229
+ var import_localeData2 = __toESM(require("dayjs/plugin/localeData"), 1);
3230
+ import_dayjs5.default.extend(import_localeData2.default);
3231
+ var WeekView = ({
3232
+ events,
3233
+ currentDate,
3234
+ isLoading,
3235
+ onDayClick,
3236
+ onEventClick,
3237
+ onEventHover,
3238
+ startHour = 0,
3239
+ endHour = 23
3240
+ }) => {
3241
+ const noEvents = events.length === 0;
3242
+ const todayString = (0, import_dayjs5.default)().format("YYYY-MM-DD");
3243
+ const startOfWeek2 = currentDate.startOf("week");
3244
+ const days = Array.from({ length: 7 }, (_, i) => startOfWeek2.add(i, "day"));
3245
+ const hours = Array.from({ length: endHour - startHour + 1 }, (_, i) => startHour + i);
3246
+ const getCellBorderType = (cellHour, dayEvents) => {
3247
+ for (const event2 of dayEvents) {
3248
+ const start = event2.start.hour() + event2.start.minute() / 60;
3249
+ const end = event2.end.hour() + event2.end.minute() / 60;
3250
+ const cellStart = cellHour;
3251
+ const cellEnd = cellHour + 1;
3252
+ if (cellEnd > start && cellStart < end) {
3253
+ if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01) return "full";
3254
+ if (Math.abs(cellStart - start) < 0.01) return "start";
3255
+ if (Math.abs(cellEnd - end) < 0.01) return "end";
3256
+ return "middle";
3257
+ }
3258
+ }
3259
+ return "none";
3260
+ };
3261
+ return /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { display: "flex", flexDirection: "column", height: "100%" }, /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { display: "flex", bgcolor: "transparent" }, /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { width: 45, bgcolor: "transparent" }), days.map((day) => {
3262
+ const isToday2 = day.format("YYYY-MM-DD") === todayString;
3263
+ return /* @__PURE__ */ import_react27.default.createElement(
3264
+ import_material20.Box,
3265
+ {
3266
+ key: day.toString(),
3267
+ height: 40,
3268
+ flex: 1,
3269
+ pl: 0.5,
3270
+ textAlign: "center",
3271
+ display: "flex",
3272
+ flexDirection: "column",
3273
+ justifyContent: "center",
3274
+ alignItems: "flex-start",
3275
+ bgcolor: isToday2 ? "primary.100" : "transparent",
3276
+ borderRadius: isToday2 ? "6px 6px 0 0" : "0",
3277
+ borderBottom: isToday2 ? 2 : 0,
3278
+ borderColor: isToday2 ? "primary.main" : "transparent"
3279
+ },
3280
+ /* @__PURE__ */ import_react27.default.createElement(import_material20.Typography, { variant: "h6", color: "text.primary" }, day.format("D")),
3281
+ /* @__PURE__ */ import_react27.default.createElement(import_material20.Typography, { variant: "caption", color: "text.secondary" }, day.format("dddd"))
3282
+ );
3283
+ })), isLoading ? /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { display: "flex", alignItems: "center", justifyContent: "center", width: "100%", height: "450px" }, /* @__PURE__ */ import_react27.default.createElement(import_material20.CircularProgress, { sx: { width: "60px", height: "60px" }, variant: "indeterminate" })) : !isLoading && noEvents ? /* @__PURE__ */ import_react27.default.createElement(
3284
+ EmptyState,
3285
+ {
3286
+ title: "Inicia la gesti\xF3n de las actividades",
3287
+ subtitle: "Selecciona un mec\xE1nico y as\xEDgnale las actividades a realizar.",
3288
+ icon: /* @__PURE__ */ import_react27.default.createElement("img", { src: Icon_Scheduler_default, alt: "icon_calendario", style: { width: 60, height: 60 } })
3289
+ }
3290
+ ) : (
3291
+ // Grid de horas y eventos
3292
+ /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { display: "flex", flex: 1 }, /* @__PURE__ */ import_react27.default.createElement(import_material20.Box, { width: 45, bgcolor: "transparent" }, hours.map((h) => /* @__PURE__ */ import_react27.default.createElement(
3293
+ import_material20.Box,
3294
+ {
3295
+ key: h,
3296
+ height: 60,
3297
+ textAlign: "right",
3298
+ pr: 1,
3299
+ borderColor: "divider"
3300
+ },
3301
+ /* @__PURE__ */ import_react27.default.createElement(import_material20.Typography, { variant: "caption", color: "text.secondary" }, (0, import_dayjs5.default)().hour(h).format("h A"))
3302
+ ))), days.map((day) => {
3303
+ const dayEvents = events.filter(
3304
+ (event2) => day.isBetween(event2.start.startOf("day"), event2.end.endOf("day"), null, "[]")
3305
+ ).filter((event2) => {
3306
+ const startsInRange = event2.start.hour() >= startHour && event2.start.hour() <= endHour;
3307
+ const endsInRange = event2.end.hour() >= startHour && event2.end.hour() <= endHour;
3308
+ return startsInRange || endsInRange;
3309
+ }).sort((a, b) => a.start.valueOf() - b.start.valueOf());
3310
+ return /* @__PURE__ */ import_react27.default.createElement(
3311
+ import_material20.Box,
3312
+ {
3313
+ key: day.toString(),
3314
+ flex: 1,
3315
+ borderLeft: "1px solid",
3316
+ borderColor: "divider",
3317
+ position: "relative",
3318
+ "data-testid": `week-day-column-${day.format("YYYY-MM-DD")}`,
3319
+ onClick: () => onDayClick == null ? void 0 : onDayClick(day)
3320
+ },
3321
+ hours.map((hourIdx) => {
3322
+ const borderType = getCellBorderType(hourIdx, dayEvents);
3323
+ return /* @__PURE__ */ import_react27.default.createElement(
3324
+ import_material20.Box,
3325
+ {
3326
+ key: hourIdx,
3327
+ height: 60,
3328
+ borderTop: "1px solid",
3329
+ borderColor: borderType === "start" || borderType === "full" || borderType === "none" ? "divider" : "transparent",
3330
+ borderBottom: borderType === "end" || borderType === "full" ? "1px solid divider" : void 0
3331
+ }
3332
+ );
3333
+ }),
3334
+ dayEvents.map((event2) => {
3335
+ const eventStart = day.isSame(event2.start, "day") ? event2.start : day.startOf("day").hour(startHour).minute(0);
3336
+ const eventEnd = day.isSame(event2.end, "day") ? event2.end : day.endOf("day").hour(endHour).minute(59);
3337
+ const startMinutes = (eventStart.hour() - startHour) * 60 + eventStart.minute();
3338
+ const durationMinutes = eventEnd.diff(eventStart, "minute");
3339
+ return /* @__PURE__ */ import_react27.default.createElement(
3340
+ CalendarEventCard,
3341
+ {
3342
+ key: `${event2.id}-${day.toString()}`,
3343
+ event: event2,
3344
+ color: stateColors[event2.state],
3345
+ onClick: () => onEventClick == null ? void 0 : onEventClick(event2, day),
3346
+ onHover: onEventHover,
3347
+ sx: {
3348
+ position: "absolute",
3349
+ top: `${startMinutes}px`,
3350
+ left: 4,
3351
+ right: 4,
3352
+ cursor: "pointer",
3353
+ height: `${durationMinutes}px`
3354
+ }
3355
+ }
3356
+ );
3357
+ })
3358
+ );
3359
+ }))
3360
+ ));
3361
+ };
3362
+
3363
+ // src/Components/Calendario/Views/DayView.tsx
3364
+ var import_react28 = __toESM(require("react"), 1);
3365
+ var import_material21 = require("@mui/material");
3366
+ var import_dayjs6 = __toESM(require("dayjs"), 1);
3367
+ var DayView = ({
3368
+ events,
3369
+ currentDate,
3370
+ isLoading,
3371
+ onEventClick,
3372
+ onEventHover,
3373
+ startHour = 0,
3374
+ endHour = 24
3375
+ }) => {
3376
+ const hours = Array.from({ length: endHour - startHour }, (_, i) => startHour + i);
3377
+ const getCellBorderType = (cellHour, dayEvents2) => {
3378
+ for (const event2 of dayEvents2) {
3379
+ const start = event2.start.hour() + event2.start.minute() / 60;
3380
+ const end = event2.end.hour() + event2.end.minute() / 60;
3381
+ const cellStart = cellHour;
3382
+ const cellEnd = cellHour + 1;
3383
+ if (cellEnd > start && cellStart < end) {
3384
+ if (Math.abs(cellStart - start) < 0.01 && Math.abs(cellEnd - end) < 0.01) return "full";
3385
+ if (Math.abs(cellStart - start) < 0.01) return "start";
3386
+ if (Math.abs(cellEnd - end) < 0.01) return "end";
3387
+ return "middle";
3388
+ }
3389
+ }
3390
+ return "none";
3391
+ };
3392
+ const dayEvents = events.filter(
3393
+ (event2) => currentDate.isBetween(event2.start.startOf("day"), event2.end.endOf("day"), null, "[]")
3394
+ );
3395
+ const noEvents = events.length === 0;
3396
+ return /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { display: "flex", flexDirection: "column", height: "100%" }, /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { display: "flex", borderBottom: "1px solid", borderColor: "primary.main", bgcolor: "background.paper" }, /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { width: 47, bgcolor: "background.default", borderBottom: "1px solid", borderColor: "transparent" }), /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { flex: 1, display: "flex", flexDirection: "column", textAlign: "start", gap: 0.5, py: 1, bgcolor: "primary.50" }, /* @__PURE__ */ import_react28.default.createElement(import_material21.Typography, { variant: "h6", color: "text.secondary" }, currentDate.format("D")), /* @__PURE__ */ import_react28.default.createElement(import_material21.Typography, { variant: "caption", color: "text.secondary" }, currentDate.format("dddd")))), isLoading ? /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { display: "flex", alignItems: "center", justifyContent: "center", width: "100%", height: "450px" }, /* @__PURE__ */ import_react28.default.createElement(import_material21.CircularProgress, { sx: { width: "60px", height: "60px" }, variant: "indeterminate" })) : noEvents ? /* @__PURE__ */ import_react28.default.createElement(
3397
+ EmptyState,
3398
+ {
3399
+ title: "Inicia la gesti\xF3n de las actividades",
3400
+ subtitle: "Selecciona un mec\xE1nico y as\xEDgnale las actividades a realizar.",
3401
+ icon: /* @__PURE__ */ import_react28.default.createElement("img", { src: Icon_Scheduler_default, alt: "icon_calendario", style: { width: 60, height: 60 } })
3402
+ }
3403
+ ) : /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { display: "flex", flex: 1 }, /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { width: 47, bgcolor: "background.default" }, hours.map((h) => /* @__PURE__ */ import_react28.default.createElement(
3404
+ import_material21.Box,
3405
+ {
3406
+ key: h,
3407
+ height: 60,
3408
+ textAlign: "right",
3409
+ pr: 1,
3410
+ borderTop: "1px solid",
3411
+ borderRight: "1px solid",
3412
+ borderColor: "divider"
3413
+ },
3414
+ /* @__PURE__ */ import_react28.default.createElement(import_material21.Typography, { variant: "caption", color: "text.secondary" }, (0, import_dayjs6.default)().hour(h).format("h A"))
3415
+ ))), /* @__PURE__ */ import_react28.default.createElement(import_material21.Box, { flex: 1, position: "relative" }, hours.map((hourIdx) => {
3416
+ const borderType = getCellBorderType(hourIdx, dayEvents);
3417
+ return /* @__PURE__ */ import_react28.default.createElement(
3418
+ import_material21.Box,
3419
+ {
3420
+ key: hourIdx,
3421
+ height: 60,
3422
+ borderTop: "1px solid",
3423
+ borderColor: borderType === "start" || borderType === "full" || borderType === "none" ? "divider" : "transparent",
3424
+ borderBottom: borderType === "end" || borderType === "full" ? "1px solid divider" : void 0
3425
+ }
3426
+ );
3427
+ }), dayEvents.map((event2) => {
3428
+ const eventStart = currentDate.isSame(event2.start, "day") ? event2.start : currentDate.startOf("day");
3429
+ const eventEnd = currentDate.isSame(event2.end, "day") ? event2.end : currentDate.endOf("day");
3430
+ const minStart = currentDate.hour(startHour).minute(0);
3431
+ const maxEnd = currentDate.hour(endHour).minute(0);
3432
+ const clampedStart = eventStart.isBefore(minStart) ? minStart : eventStart;
3433
+ const clampedEnd = eventEnd.isAfter(maxEnd) ? maxEnd : eventEnd;
3434
+ const startMinutes = (clampedStart.hour() - startHour) * 60 + clampedStart.minute();
3435
+ const durationMinutes = clampedEnd.diff(clampedStart, "minute");
3436
+ return /* @__PURE__ */ import_react28.default.createElement(
3437
+ CalendarEventCard,
3438
+ {
3439
+ key: `${event2.id}-${currentDate.toString()}`,
3440
+ event: event2,
3441
+ color: stateColors[event2.state],
3442
+ onClick: () => onEventClick == null ? void 0 : onEventClick(event2, currentDate),
3443
+ onHover: onEventHover,
3444
+ sx: {
3445
+ position: "absolute",
3446
+ top: `${startMinutes}px`,
3447
+ height: `${durationMinutes}px`,
3448
+ left: 4,
3449
+ right: 4
3450
+ }
3451
+ }
3452
+ );
3453
+ }))));
3454
+ };
3455
+
3456
+ // src/Components/Calendario/Calendar.tsx
3457
+ var import_dayjs7 = __toESM(require("dayjs"), 1);
3458
+ var Calendar = ({
3459
+ events,
3460
+ onDayClick,
3461
+ onMoreClick,
3462
+ onEventClick,
3463
+ onEventHover,
3464
+ view: initialView = "month",
3465
+ onViewChange,
3466
+ toolbar,
3467
+ isLoading = false,
3468
+ startHour = 0,
3469
+ // <- valor por defecto
3470
+ endHour = 23
3471
+ }) => {
3472
+ const [view, setView] = (0, import_react29.useState)(initialView);
3473
+ const [currentDate, setCurrentDate] = (0, import_react29.useState)((0, import_dayjs7.default)());
3474
+ const handleViewChange = (newView) => {
3475
+ setView(newView);
3476
+ onViewChange == null ? void 0 : onViewChange(newView);
3477
+ };
3478
+ const handleNavigate = (action) => {
3479
+ let newDate = currentDate;
3480
+ const unit = view === "month" ? "month" : "day";
3481
+ if (action === "PREV") newDate = currentDate.subtract(1, unit);
3482
+ else if (action === "NEXT") newDate = currentDate.add(1, unit);
3483
+ else if (action === "TODAY") newDate = (0, import_dayjs7.default)();
3484
+ setCurrentDate(newDate);
3485
+ };
3486
+ return /* @__PURE__ */ import_react29.default.createElement(import_material22.Box, null, /* @__PURE__ */ import_react29.default.createElement(
3487
+ CalendarToolbar,
3488
+ {
3489
+ labelDate: currentDate,
3490
+ view,
3491
+ onView: handleViewChange,
3492
+ onNavigate: handleNavigate
3493
+ },
3494
+ toolbar
3495
+ ), isLoading ? /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, /* @__PURE__ */ import_react29.default.createElement(import_material22.Box, null, /* @__PURE__ */ import_react29.default.createElement(
3496
+ import_material22.Box,
3497
+ {
3498
+ display: "flex",
3499
+ justifyContent: "center",
3500
+ alignItems: "center",
3501
+ height: "400px"
3502
+ },
3503
+ /* @__PURE__ */ import_react29.default.createElement(import_material22.CircularProgress, { variant: "indeterminate" })
3504
+ ))) : /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, view === "month" && /* @__PURE__ */ import_react29.default.createElement(
3505
+ MonthView,
3506
+ {
3507
+ events,
3508
+ currentDate,
3509
+ onDayClick,
3510
+ onMoreClick,
3511
+ onEventClick,
3512
+ onEventHover
3513
+ }
3514
+ ), view === "week" && /* @__PURE__ */ import_react29.default.createElement(
3515
+ WeekView,
3516
+ {
3517
+ events,
3518
+ currentDate,
3519
+ onDayClick,
3520
+ onMoreClick,
3521
+ onEventClick,
3522
+ onEventHover,
3523
+ startHour,
3524
+ endHour
3525
+ }
3526
+ ), view === "day" && /* @__PURE__ */ import_react29.default.createElement(
3527
+ DayView,
3528
+ {
3529
+ events,
3530
+ currentDate,
3531
+ onEventClick,
3532
+ onEventHover,
3533
+ startHour,
3534
+ endHour
3535
+ }
3536
+ )));
3537
+ };
3538
+
3539
+ // src/Components/SCTime.tsx
3540
+ var import_react30 = __toESM(require("react"), 1);
3541
+ var import_material23 = require("@mui/material");
3542
+ var import_LocalizationProvider3 = require("@mui/x-date-pickers/LocalizationProvider");
3543
+ var import_AdapterDayjs2 = require("@mui/x-date-pickers/AdapterDayjs");
3544
+ var import_dayjs8 = __toESM(require("dayjs"), 1);
3545
+ var import_es3 = require("dayjs/locale/es");
3546
+ var import_x_license_pro3 = require("@mui/x-license-pro");
3547
+ var import_AccessTime = __toESM(require("@mui/icons-material/AccessTime"), 1);
3548
+ var import_TimeField = require("@mui/x-date-pickers/TimeField");
3549
+ var import_DigitalClock = require("@mui/x-date-pickers/DigitalClock");
3550
+ var SCTime = ({
3551
+ label = "Hora",
3552
+ required = false,
3553
+ disabled = false,
3554
+ background = "transparent",
3555
+ timeStep = 5,
3556
+ state,
3557
+ setState
3558
+ }) => {
3559
+ import_x_license_pro3.LicenseInfo.setLicenseKey(
3560
+ "77d49a57fbc5f4af35ddb05c5f1742e0Tz0xMTI3MjgsRT0xNzc4MzcxMTk5MDAwLFM9cHJvLExNPXN1YnNjcmlwdGlvbixQVj1RMy0yMDI0LEtWPTI="
3561
+ );
3562
+ const isTimeEmpty = required && !state;
3563
+ const hasError = isTimeEmpty;
3564
+ const [anchorEl, setAnchorEl] = (0, import_react30.useState)(null);
3565
+ const [isOpenPopover, setIsOpenPopover] = (0, import_react30.useState)(false);
3566
+ const [popoverPlacement, setPopoverPlacement] = (0, import_react30.useState)("bottom");
3567
+ const detectPlacement = (element) => {
3568
+ const rect = element.getBoundingClientRect();
3569
+ const windowHeight = window.innerHeight;
3570
+ const spaceBelow = windowHeight - rect.bottom;
3571
+ const spaceAbove = rect.top;
3572
+ const popoverHeight = 300;
3573
+ if (spaceBelow < popoverHeight && spaceAbove > spaceBelow) {
3574
+ setPopoverPlacement("top");
3575
+ } else {
3576
+ setPopoverPlacement("bottom");
3577
+ }
3578
+ };
3579
+ const handleTimeFieldClick = (event2) => {
3580
+ if (!disabled) {
3581
+ const target = event2.currentTarget;
3582
+ setAnchorEl(target);
3583
+ detectPlacement(target);
3584
+ setIsOpenPopover(true);
3585
+ }
3586
+ };
3587
+ const handleTimeChange = (newValue) => {
3588
+ const dayjsValue = newValue ? (0, import_dayjs8.default)(newValue) : null;
3589
+ setState(dayjsValue);
3590
+ setIsOpenPopover(false);
3591
+ setAnchorEl(null);
3592
+ };
3593
+ const handleClose = () => {
3594
+ setIsOpenPopover(false);
3595
+ setAnchorEl(null);
3596
+ };
3597
+ return /* @__PURE__ */ import_react30.default.createElement(import_LocalizationProvider3.LocalizationProvider, { dateAdapter: import_AdapterDayjs2.AdapterDayjs }, /* @__PURE__ */ import_react30.default.createElement(import_material23.Box, { sx: { position: "relative", width: "120px" } }, /* @__PURE__ */ import_react30.default.createElement(
3598
+ import_TimeField.TimeField,
3599
+ {
3600
+ label,
3601
+ value: state,
3602
+ disabled,
3603
+ required,
3604
+ error: hasError,
3605
+ onClick: handleTimeFieldClick,
3606
+ slotProps: {
3607
+ textField: {
3608
+ InputProps: {
3609
+ endAdornment: /* @__PURE__ */ import_react30.default.createElement(import_material23.InputAdornment, { position: "end" }, /* @__PURE__ */ import_react30.default.createElement(
3610
+ import_AccessTime.default,
3611
+ {
3612
+ color: disabled ? "disabled" : "action",
3613
+ sx: { cursor: disabled ? "default" : "pointer" },
3614
+ fontSize: "small"
3615
+ }
3616
+ )),
3617
+ sx: {
3618
+ backgroundColor: background,
3619
+ padding: "8px 12px",
3620
+ cursor: disabled ? "default" : "pointer",
3621
+ "& input": {
3622
+ cursor: disabled ? "default" : "pointer"
3623
+ }
3624
+ }
3625
+ }
3626
+ }
3627
+ },
3628
+ sx: {
3629
+ width: "100%",
3630
+ "& .MuiInputBase-input": {
3631
+ cursor: disabled ? "default" : "pointer"
3632
+ },
3633
+ "& .MuiPickersSectionList-root": {
3634
+ padding: "0px !important"
3635
+ }
3636
+ }
3637
+ }
3638
+ ), /* @__PURE__ */ import_react30.default.createElement(
3639
+ import_material23.Popover,
3640
+ {
3641
+ open: isOpenPopover,
3642
+ anchorEl,
3643
+ onClose: handleClose,
3644
+ anchorOrigin: {
3645
+ vertical: popoverPlacement === "top" ? "top" : "bottom",
3646
+ horizontal: "left"
3647
+ },
3648
+ transformOrigin: {
3649
+ vertical: popoverPlacement === "top" ? "bottom" : "top",
3650
+ horizontal: "left"
3651
+ },
3652
+ marginThreshold: 0,
3653
+ disableScrollLock: true,
3654
+ slotProps: {
3655
+ paper: {
3656
+ sx: {
3657
+ boxShadow: "0px 4px 20px rgba(0, 0, 0, 0.1)",
3658
+ borderRadius: 1,
3659
+ border: "1px solid #e0e0e0",
3660
+ maxHeight: "300px",
3661
+ overflow: "visible"
3662
+ }
3663
+ }
3664
+ }
3665
+ },
3666
+ /* @__PURE__ */ import_react30.default.createElement(import_material23.ClickAwayListener, { onClickAway: handleClose }, /* @__PURE__ */ import_react30.default.createElement(import_material23.Box, { sx: { p: 0 } }, /* @__PURE__ */ import_react30.default.createElement(
3667
+ import_DigitalClock.DigitalClock,
3668
+ {
3669
+ value: state,
3670
+ onChange: handleTimeChange,
3671
+ timeStep,
3672
+ sx: {
3673
+ "& .MuiList-root": {
3674
+ maxHeight: "250px",
3675
+ overflow: "auto"
3676
+ },
3677
+ "& .MuiMenuItem-root": {
3678
+ fontSize: "0.875rem",
3679
+ py: 0.5
3680
+ }
3681
+ }
3682
+ }
3683
+ )))
3684
+ )));
2607
3685
  };
2608
3686
 
2609
3687
  // src/Theme/index.ts
2610
3688
  var import_styles3 = require("@mui/material/styles");
2611
3689
 
2612
3690
  // src/Theme/components.ts
2613
- var import_react23 = __toESM(require("react"), 1);
2614
- var import_icons_material10 = require("@mui/icons-material");
3691
+ var import_react31 = __toESM(require("react"), 1);
3692
+ var import_icons_material11 = require("@mui/icons-material");
2615
3693
  var components = {
2616
3694
  MuiSelect: {
2617
3695
  styleOverrides: {
@@ -3308,10 +4386,10 @@ var components = {
3308
4386
  MuiAlert: {
3309
4387
  defaultProps: {
3310
4388
  iconMapping: {
3311
- success: import_react23.default.createElement(import_icons_material10.CheckCircleRounded),
3312
- error: import_react23.default.createElement(import_icons_material10.ErrorRounded),
3313
- warning: import_react23.default.createElement(import_icons_material10.WarningRounded),
3314
- info: import_react23.default.createElement(import_icons_material10.InfoRounded)
4389
+ success: import_react31.default.createElement(import_icons_material11.CheckCircleRounded),
4390
+ error: import_react31.default.createElement(import_icons_material11.ErrorRounded),
4391
+ warning: import_react31.default.createElement(import_icons_material11.WarningRounded),
4392
+ info: import_react31.default.createElement(import_icons_material11.InfoRounded)
3315
4393
  }
3316
4394
  },
3317
4395
  variants: [
@@ -4353,6 +5431,7 @@ var ADCSincoTheme = (0, import_styles3.createTheme)(__spreadValues({}, ADCTheme)
4353
5431
  0 && (module.exports = {
4354
5432
  ADCSincoTheme,
4355
5433
  AdproSincoTheme,
5434
+ Calendar,
4356
5435
  EmptyState,
4357
5436
  FooterAction,
4358
5437
  MultiSelect,
@@ -4370,6 +5449,7 @@ var ADCSincoTheme = (0, import_styles3.createTheme)(__spreadValues({}, ADCTheme)
4370
5449
  SCTabs,
4371
5450
  SCTextArea,
4372
5451
  SCTextField,
5452
+ SCTime,
4373
5453
  SCToastNotification,
4374
5454
  SincoTheme,
4375
5455
  ToastProgress,