sag_components 2.0.0-beta141 → 2.0.0-beta143

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -13080,17 +13080,17 @@ const Modal$1 = styled__default["default"].div`
13080
13080
  margin: 0 auto;
13081
13081
  ${scrollableStyles$a}
13082
13082
  `;
13083
- const ModalHeader$1 = styled__default["default"].div`
13083
+ const ModalHeader$2 = styled__default["default"].div`
13084
13084
  display: flex;
13085
13085
  align-items: center;
13086
13086
  justify-content: space-between;
13087
13087
  margin-bottom: 32px;
13088
13088
  `;
13089
- const ModalBody$1 = styled__default["default"].div`
13089
+ const ModalBody$2 = styled__default["default"].div`
13090
13090
  ${scrollableStyles$a}
13091
13091
  max-height: 80vh;
13092
13092
  `;
13093
- const ModalTitle$2 = styled__default["default"].h5`
13093
+ const ModalTitle$3 = styled__default["default"].h5`
13094
13094
  font-family: 'Poppins', sans-serif;
13095
13095
  font-size: 32px;
13096
13096
  font-weight: 500;
@@ -13122,12 +13122,12 @@ const DialogOverlay$1 = props => {
13122
13122
  };
13123
13123
  return /*#__PURE__*/React.createElement(ModalWrapper$1, {
13124
13124
  className: className
13125
- }, /*#__PURE__*/React.createElement(Modal$1, null, /*#__PURE__*/React.createElement(ModalHeader$1, null, /*#__PURE__*/React.createElement(ModalTitle$2, null, title), /*#__PURE__*/React.createElement(ModalClose, {
13125
+ }, /*#__PURE__*/React.createElement(Modal$1, null, /*#__PURE__*/React.createElement(ModalHeader$2, null, /*#__PURE__*/React.createElement(ModalTitle$3, null, title), /*#__PURE__*/React.createElement(ModalClose, {
13126
13126
  type: "button",
13127
13127
  onClick: closeModal
13128
13128
  }, /*#__PURE__*/React.createElement(CloseXIcon, {
13129
13129
  fill: "white"
13130
- }))), /*#__PURE__*/React.createElement(ModalBody$1, {
13130
+ }))), /*#__PURE__*/React.createElement(ModalBody$2, {
13131
13131
  id: "modalBody"
13132
13132
  }, children)));
13133
13133
  };
@@ -27219,7 +27219,7 @@ const scrollableStyles$6 = `
27219
27219
  }
27220
27220
  `;
27221
27221
  const MainContainer$1 = styled__default["default"].div``;
27222
- const ModalOverlay$1 = styled__default["default"].div`
27222
+ const ModalOverlay$2 = styled__default["default"].div`
27223
27223
  position: fixed;
27224
27224
  z-index: 100;
27225
27225
  top: 0;
@@ -27231,7 +27231,7 @@ const ModalOverlay$1 = styled__default["default"].div`
27231
27231
  justify-content: center;
27232
27232
  align-items: center;
27233
27233
  `;
27234
- const ModalContent$1 = styled__default["default"].div`
27234
+ const ModalContent$2 = styled__default["default"].div`
27235
27235
  font-family: "Poppins", sans-serif;
27236
27236
  font-weight: 500;
27237
27237
  font-size: 18px;
@@ -27461,10 +27461,10 @@ const PopupCharts = props => {
27461
27461
  }, displayChart(item)));
27462
27462
  return /*#__PURE__*/React__default["default"].createElement(MainContainer$1, {
27463
27463
  id: "MainContainer"
27464
- }, IsPopupChartsOpen && /*#__PURE__*/React__default["default"].createElement(ModalOverlay$1, {
27464
+ }, IsPopupChartsOpen && /*#__PURE__*/React__default["default"].createElement(ModalOverlay$2, {
27465
27465
  id: "ModalOverlay",
27466
27466
  className: "modal-overlay"
27467
- }, /*#__PURE__*/React__default["default"].createElement(ModalContent$1, {
27467
+ }, /*#__PURE__*/React__default["default"].createElement(ModalContent$2, {
27468
27468
  id: "ModalContent",
27469
27469
  ref: divRef,
27470
27470
  className: "modal-content",
@@ -33817,7 +33817,7 @@ const Overlay$2 = styled__default["default"].div`
33817
33817
  align-items: center;
33818
33818
  z-index: 999;
33819
33819
  `;
33820
- const ModalContent = styled__default["default"].div`
33820
+ const ModalContent$1 = styled__default["default"].div`
33821
33821
  position: absolute;
33822
33822
  width: 70%;
33823
33823
  height: 80%;
@@ -33843,7 +33843,7 @@ const Header$3 = styled__default["default"].div`
33843
33843
  align-items: flex-start;
33844
33844
  }
33845
33845
  `;
33846
- const CloseButton$1 = styled__default["default"].button`
33846
+ const CloseButton$2 = styled__default["default"].button`
33847
33847
  position: absolute;
33848
33848
  top: -10px;
33849
33849
  right: 0px;
@@ -34040,11 +34040,11 @@ const InsightsCarousel = _ref => {
34040
34040
  const nextIndex = (currentIndex + 1) % totalChildren;
34041
34041
  return /*#__PURE__*/React__default["default"].createElement(Overlay$2, {
34042
34042
  className: className
34043
- }, /*#__PURE__*/React__default["default"].createElement(ModalContent, null, /*#__PURE__*/React__default["default"].createElement(Header$3, null, /*#__PURE__*/React__default["default"].createElement(Title$8, {
34043
+ }, /*#__PURE__*/React__default["default"].createElement(ModalContent$1, null, /*#__PURE__*/React__default["default"].createElement(Header$3, null, /*#__PURE__*/React__default["default"].createElement(Title$8, {
34044
34044
  $titleColor: titleColor
34045
34045
  }, /*#__PURE__*/React__default["default"].cloneElement(icon, {
34046
34046
  fill: iconColor
34047
- }), title), /*#__PURE__*/React__default["default"].createElement(CloseButton$1, {
34047
+ }), title), /*#__PURE__*/React__default["default"].createElement(CloseButton$2, {
34048
34048
  onClick: () => onClose?.({
34049
34049
  label: "closeCarousel"
34050
34050
  }),
@@ -34361,7 +34361,7 @@ const Modal = styled__default["default"].div`
34361
34361
  border-radius: 12px;
34362
34362
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
34363
34363
  `;
34364
- const ModalHeader = styled__default["default"].div`
34364
+ const ModalHeader$1 = styled__default["default"].div`
34365
34365
  display: flex;
34366
34366
  justify-content: space-between;
34367
34367
  `;
@@ -34369,12 +34369,12 @@ const ModalButtons = styled__default["default"].div`
34369
34369
  display: flex;
34370
34370
  gap: 10px;
34371
34371
  `;
34372
- const ModalTitle$1 = styled__default["default"].h3`
34372
+ const ModalTitle$2 = styled__default["default"].h3`
34373
34373
  margin: 0;
34374
34374
  font-size: 24px;
34375
34375
  font-weight: 500;
34376
34376
  `;
34377
- const ModalBody = styled__default["default"].div`
34377
+ const ModalBody$1 = styled__default["default"].div`
34378
34378
  width: 100%;
34379
34379
  height: 100%;
34380
34380
  `;
@@ -34425,9 +34425,9 @@ const ModalWithOverlay = props => {
34425
34425
  width,
34426
34426
  height
34427
34427
  }
34428
- }, /*#__PURE__*/React__default["default"].createElement(ModalHeader, {
34428
+ }, /*#__PURE__*/React__default["default"].createElement(ModalHeader$1, {
34429
34429
  className: "modal-header"
34430
- }, /*#__PURE__*/React__default["default"].createElement(ModalTitle$1, null, title), /*#__PURE__*/React__default["default"].createElement(ModalButtons, {
34430
+ }, /*#__PURE__*/React__default["default"].createElement(ModalTitle$2, null, title), /*#__PURE__*/React__default["default"].createElement(ModalButtons, {
34431
34431
  className: "modal-buttons"
34432
34432
  }, showCancelButton && /*#__PURE__*/React__default["default"].createElement(Button$1, {
34433
34433
  size: "medium",
@@ -34474,7 +34474,7 @@ const ModalWithOverlay = props => {
34474
34474
  backgroundColor: okButtonColor,
34475
34475
  hoverBorderColor: okButtonHoverBackgroundColor,
34476
34476
  hoverBackgroundColor: okButtonHoverBackgroundColor
34477
- })))), /*#__PURE__*/React__default["default"].createElement(ModalBody, {
34477
+ })))), /*#__PURE__*/React__default["default"].createElement(ModalBody$1, {
34478
34478
  className: "modal-body"
34479
34479
  }, children)));
34480
34480
  };
@@ -38060,6 +38060,7 @@ const TableRow = styled__default["default"].tr`
38060
38060
  transition: all 0.3s ease;
38061
38061
  font-family: "Poppins", sans-serif;
38062
38062
  position: relative;
38063
+ background-color: ${props => props.isFocused ? props.selectedColor : "white"};
38063
38064
 
38064
38065
  &:hover {
38065
38066
  background-color: #e6f0f0;
@@ -38272,6 +38273,27 @@ const TrashIconWrapper = styled__default["default"].div`
38272
38273
  }
38273
38274
  }
38274
38275
  `;
38276
+ const CommentIconWrapper = styled__default["default"].div`
38277
+ cursor: pointer;
38278
+ transition: color 0.2s ease;
38279
+ display: inline-flex;
38280
+ align-items: center;
38281
+ justify-content: center;
38282
+ width: 100%;
38283
+ height: 100%;
38284
+ position: relative;
38285
+
38286
+ ${tooltipStyles}
38287
+
38288
+ /* Override tooltip position to move left */
38289
+ &[data-tooltip]:hover::before {
38290
+ left: calc(var(--tooltip-left, 0px) + var(--tooltip-width, 0px) / 2 - 50px);
38291
+ }
38292
+
38293
+ &[data-tooltip]:hover::after {
38294
+ left: calc(var(--tooltip-left, 0px) + var(--tooltip-width, 0px) / 2 - 50px);
38295
+ }
38296
+ `;
38275
38297
  const DisabledTrashIconWrapper = styled__default["default"].div`
38276
38298
  display: inline-flex;
38277
38299
  align-items: center;
@@ -38295,6 +38317,300 @@ const DisabledTrashIconWrapper = styled__default["default"].div`
38295
38317
  color: #d9d9d9;
38296
38318
  }
38297
38319
  `;
38320
+ const StatusCell = styled__default["default"].div`
38321
+ font-size: 12px;
38322
+ font-weight: 500;
38323
+ display: flex;
38324
+ align-items: center;
38325
+ gap: 6px;
38326
+ color: ${props => props.color || "#000"};
38327
+ `;
38328
+ const StatusCellCircle = styled__default["default"].div`
38329
+ width: 8px;
38330
+ height: 8px;
38331
+ border-radius: 50%;
38332
+ border: 1px solid white;
38333
+ background-color: ${props => props.backgroundColor};
38334
+ `;
38335
+
38336
+ // CommentModal.styles.js
38337
+ const ModalOverlay$1 = styled__default["default"].div`
38338
+ position: fixed;
38339
+ top: 0;
38340
+ left: 0;
38341
+ right: 0;
38342
+ bottom: 0;
38343
+ background-color: rgba(0, 0, 0, 0.5);
38344
+ display: flex;
38345
+ align-items: center;
38346
+ justify-content: center;
38347
+ z-index: 1000;
38348
+ `;
38349
+ const ModalContent = styled__default["default"].div`
38350
+ background: white;
38351
+ border-radius: 12px;
38352
+ width: 90%;
38353
+ max-width: 500px;
38354
+ max-height: 400px;
38355
+ display: flex;
38356
+ flex-direction: column;
38357
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
38358
+ animation: slideUp 0.3s ease-out;
38359
+
38360
+ @keyframes slideUp {
38361
+ from {
38362
+ opacity: 0;
38363
+ transform: translateY(20px) scale(0.95);
38364
+ }
38365
+ to {
38366
+ opacity: 1;
38367
+ transform: translateY(0) scale(1);
38368
+ }
38369
+ }
38370
+ `;
38371
+ const ModalHeader = styled__default["default"].div`
38372
+ display: flex;
38373
+ justify-content: space-between;
38374
+ align-items: center;
38375
+ padding: 12px 24px;
38376
+ border-bottom: 1px solid #D9D9D9;
38377
+ flex-shrink: 0;
38378
+ `;
38379
+ const ModalTitle$1 = styled__default["default"].h5`
38380
+ font-family: "Poppins", sans-serif;
38381
+ font-size: 18px;
38382
+ font-weight: 600;
38383
+ color: #212121;
38384
+ margin: 0;
38385
+ `;
38386
+ const CloseButton$1 = styled__default["default"].button`
38387
+ background: none;
38388
+ border: none;
38389
+ padding: 8px;
38390
+ cursor: pointer;
38391
+ color: #6b7280;
38392
+ border-radius: 6px;
38393
+ transition: all 0.2s ease;
38394
+ display: flex;
38395
+ align-items: center;
38396
+ justify-content: center;
38397
+
38398
+ &:hover {
38399
+ background-color: #f3f4f6;
38400
+ color: #374151;
38401
+ }
38402
+
38403
+ &:active {
38404
+ transform: scale(0.95);
38405
+ }
38406
+ `;
38407
+ const ModalBody = styled__default["default"].div`
38408
+ padding: 20px 24px 24px;
38409
+ flex: 1;
38410
+ display: flex;
38411
+ flex-direction: column;
38412
+ overflow: hidden;
38413
+ `;
38414
+ const TextareaWrapper = styled__default["default"].div`
38415
+ position: relative;
38416
+ display: flex;
38417
+ flex-direction: column;
38418
+ flex: 1;
38419
+ `;
38420
+ const TextareaLabel = styled__default["default"].label`
38421
+ position: absolute;
38422
+ font-size: 14px;
38423
+ font-weight: 400;
38424
+ top: -10px;
38425
+ left: 25px;
38426
+ padding: 0 4px;
38427
+ background-color: white;
38428
+ color: ${props => props.color};
38429
+ transition: all 0.2s ease;
38430
+ animation: slideInLabel 0.2s ease-out;
38431
+
38432
+ @keyframes slideInLabel {
38433
+ from {
38434
+ opacity: 0;
38435
+ transform: translateY(-4px);
38436
+ }
38437
+ to {
38438
+ opacity: 1;
38439
+ transform: translateY(0);
38440
+ }
38441
+ }
38442
+ `;
38443
+ const CommentTextarea = styled__default["default"].textarea`
38444
+ width: 100%;
38445
+ min-height: 120px;
38446
+ max-height: 200px;
38447
+ padding: 12px 16px;
38448
+ outline: none;
38449
+ border: 1px solid ${props => props.$hasValue ? props.color : '#8B8989'};
38450
+ border-radius: 12px;
38451
+ font-weight: 400;
38452
+ font-size: 14px;
38453
+ line-height: 1.5;
38454
+ resize: vertical;
38455
+ box-sizing: border-box;
38456
+ transition: all 0.2s ease;
38457
+ overflow-y: auto;
38458
+ font-family: "Poppins", sans-serif;
38459
+ resize: none;
38460
+
38461
+ &:focus {
38462
+ border: 1px solid ${props => props.color};
38463
+ }
38464
+
38465
+ &::placeholder {
38466
+ color: #9ca3af;
38467
+ }
38468
+
38469
+ /* Custom scrollbar */
38470
+ &::-webkit-scrollbar {
38471
+ width: 6px;
38472
+ }
38473
+
38474
+ &::-webkit-scrollbar-track {
38475
+ background: #f1f5f9;
38476
+ border-radius: 3px;
38477
+ }
38478
+
38479
+ &::-webkit-scrollbar-thumb {
38480
+ background: #cbd5e1;
38481
+ border-radius: 3px;
38482
+ }
38483
+
38484
+ &::-webkit-scrollbar-thumb:hover {
38485
+ background: #94a3b8;
38486
+ }
38487
+ `;
38488
+ const CharacterCount = styled__default["default"].div`
38489
+ margin-top: 8px;
38490
+ font-family: "Poppins", sans-serif;
38491
+ font-size: 12px;
38492
+ font-weight: 400;
38493
+ color: #6b7280;
38494
+ text-align: right;
38495
+ transition: color 0.2s ease;
38496
+ `;
38497
+ const ModalBottom = styled__default["default"].div`
38498
+ padding: 16px 24px;
38499
+ border-top: 1px solid #D9D9D9;
38500
+ display: flex;
38501
+ gap: 16px;
38502
+ justify-content: flex-end;
38503
+ align-items: center;
38504
+ `;
38505
+
38506
+ const CommentModal = props => {
38507
+ const {
38508
+ isOpen,
38509
+ onClose,
38510
+ onSave,
38511
+ maxLength = 150,
38512
+ color = "#066768",
38513
+ saveButtonHoverColor = "#388586",
38514
+ initialValue = ''
38515
+ } = props;
38516
+ const [commentText, setCommentText] = React$1.useState('');
38517
+ const [isFocused, setIsFocused] = React$1.useState(false);
38518
+ const [hasUserInteracted, setHasUserInteracted] = React$1.useState(false); // Track if user has started typing
38519
+ const [hasInitialValue, setHasInitialValue] = React$1.useState(false); // Track if there was initial text
38520
+
38521
+ // Update comment text when modal opens with initial value
38522
+ React$1.useEffect(() => {
38523
+ if (isOpen) {
38524
+ const initialText = initialValue || '';
38525
+ setCommentText(initialText);
38526
+ setHasInitialValue(Boolean(initialText.trim())); // Check if there's actual content
38527
+ setHasUserInteracted(false); // Reset interaction state
38528
+ }
38529
+ }, [isOpen, initialValue]);
38530
+ if (!isOpen) return null;
38531
+ const handleTextChange = e => {
38532
+ const text = e.target.value;
38533
+ if (text.length <= maxLength) {
38534
+ setCommentText(text);
38535
+ if (!hasUserInteracted) {
38536
+ setHasUserInteracted(true); // Mark that user has started interacting
38537
+ }
38538
+ }
38539
+ };
38540
+ const handleOverlayClick = e => {
38541
+ if (e.target === e.currentTarget) {
38542
+ onClose();
38543
+ }
38544
+ };
38545
+ const handleSave = () => {
38546
+ if (onSave) {
38547
+ onSave(commentText);
38548
+ }
38549
+ // Don't clear the text here - let the parent handle closing
38550
+ };
38551
+ const handleClose = () => {
38552
+ setCommentText('');
38553
+ setHasUserInteracted(false);
38554
+ setHasInitialValue(false);
38555
+ onClose();
38556
+ };
38557
+ const handleFocus = () => {
38558
+ setIsFocused(true);
38559
+ };
38560
+ const handleBlur = () => {
38561
+ setIsFocused(false);
38562
+ };
38563
+
38564
+ // Determine if save button should be enabled
38565
+ const isSaveEnabled = hasUserInteracted && (commentText.length > 0 || hasInitialValue);
38566
+ return /*#__PURE__*/React__default["default"].createElement(ModalOverlay$1, {
38567
+ onClick: handleOverlayClick
38568
+ }, /*#__PURE__*/React__default["default"].createElement(ModalContent, null, /*#__PURE__*/React__default["default"].createElement(ModalHeader, null, /*#__PURE__*/React__default["default"].createElement(ModalTitle$1, null, "Add Comment"), /*#__PURE__*/React__default["default"].createElement(CloseButton$1, {
38569
+ onClick: handleClose
38570
+ }, /*#__PURE__*/React__default["default"].createElement("svg", {
38571
+ width: "24",
38572
+ height: "24",
38573
+ viewBox: "0 0 24 24",
38574
+ fill: "none"
38575
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
38576
+ d: "M18 6L6 18M6 6l12 12",
38577
+ stroke: "currentColor",
38578
+ strokeWidth: "2",
38579
+ strokeLinecap: "round",
38580
+ strokeLinejoin: "round"
38581
+ })))), /*#__PURE__*/React__default["default"].createElement(ModalBody, null, /*#__PURE__*/React__default["default"].createElement(TextareaWrapper, null, (commentText.length > 0 || isFocused) && /*#__PURE__*/React__default["default"].createElement(TextareaLabel, {
38582
+ color: color
38583
+ }, "Comment"), /*#__PURE__*/React__default["default"].createElement(CommentTextarea, {
38584
+ value: commentText,
38585
+ onChange: handleTextChange,
38586
+ placeholder: "Type a Comment...",
38587
+ maxLength: maxLength,
38588
+ color: color,
38589
+ $hasValue: commentText.length > 0,
38590
+ onBlur: handleBlur,
38591
+ onFocus: handleFocus
38592
+ }), /*#__PURE__*/React__default["default"].createElement(CharacterCount, null, commentText.length, "/", maxLength))), /*#__PURE__*/React__default["default"].createElement(ModalBottom, null, /*#__PURE__*/React__default["default"].createElement(Button$1, {
38593
+ text: "Cancel",
38594
+ type: "secondary",
38595
+ size: "medium",
38596
+ borderColor: "#D3D3D3",
38597
+ hoverTextColor: "#212121",
38598
+ hoverBackgroundColor: "#E6F0F0",
38599
+ hoverBorderColor: "#D3D3D3",
38600
+ onClick: handleClose
38601
+ }), /*#__PURE__*/React__default["default"].createElement(Button$1, {
38602
+ text: "Save",
38603
+ size: "medium",
38604
+ disabled: !isSaveEnabled,
38605
+ hoverTextColor: "#ffffff",
38606
+ disabledTextColor: "#ffffff",
38607
+ borderColor: color,
38608
+ backgroundColor: color,
38609
+ hoverBorderColor: saveButtonHoverColor,
38610
+ hoverBackgroundColor: saveButtonHoverColor,
38611
+ onClick: handleSave
38612
+ }))));
38613
+ };
38298
38614
 
38299
38615
  // OkIcon.jsx
38300
38616
  const OkIcon = _ref => {
@@ -38314,6 +38630,30 @@ const OkIcon = _ref => {
38314
38630
  }));
38315
38631
  };
38316
38632
 
38633
+ const CommentIcon = ({
38634
+ width = '15',
38635
+ height = '15',
38636
+ showCircle = false,
38637
+ circleColor = '#066768'
38638
+ }) => /*#__PURE__*/React__default["default"].createElement("svg", {
38639
+ xmlns: "http://www.w3.org/2000/svg",
38640
+ width: width,
38641
+ height: height,
38642
+ viewBox: "0 0 15 15",
38643
+ fill: "none"
38644
+ }, showCircle ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("path", {
38645
+ d: "M7.41699 1C7.2371 1.41164 7.1112 1.85196 7.04785 2.3125H1.75C1.5094 2.3125 1.31254 2.5094 1.3125 2.75V10.625C1.3125 10.8656 1.50937 11.0625 1.75 11.0625H4.375C5.09961 11.0625 5.6875 11.6513 5.6875 12.376V12.8135L7.66992 11.3252C7.89675 11.1558 8.17284 11.0626 8.45703 11.0625H12.25C12.4906 11.0625 12.6875 10.8656 12.6875 10.625V7.95117C13.148 7.88782 13.5884 7.76288 14 7.58301V10.625C14 11.5903 13.2152 12.376 12.25 12.376H8.45703L5.6875 14.4541L5.68164 14.459L5.54297 14.5635L5.0752 14.9131C4.94395 15.0115 4.76562 15.0279 4.61523 14.9541C4.46515 14.8803 4.37514 14.73 4.375 14.5635V12.376H1.75C0.784766 12.376 0 11.5903 0 10.625V2.75C4.08976e-05 1.78476 0.784791 1 1.75 1H7.41699Z",
38646
+ fill: "#212121"
38647
+ }), /*#__PURE__*/React__default["default"].createElement("circle", {
38648
+ cx: "12",
38649
+ cy: "3",
38650
+ r: "3",
38651
+ fill: circleColor
38652
+ })) : /*#__PURE__*/React__default["default"].createElement("path", {
38653
+ d: "M4.375 10.0629C5.09961 10.0629 5.6875 10.6509 5.6875 11.3755V11.813L7.66992 10.3254C7.89687 10.1559 8.17305 10.0629 8.45742 10.0629H12.25C12.4906 10.0629 12.6875 9.86605 12.6875 9.62541V1.75008C12.6875 1.50944 12.4906 1.31256 12.25 1.31256H1.75C1.50937 1.31256 1.3125 1.50944 1.3125 1.75008V9.62541C1.3125 9.86605 1.50937 10.0629 1.75 10.0629H4.375ZM5.6875 13.4537L5.68203 13.4592L5.54258 13.5631L5.075 13.9131C4.94375 14.0115 4.76602 14.0279 4.61562 13.9541C4.46523 13.8803 4.375 13.7299 4.375 13.5631V12.9806V12.8056V12.7974V12.688V11.3755H3.0625H1.75C0.784766 11.3755 0 10.5907 0 9.62541V1.75008C0 0.784799 0.784766 0 1.75 0H12.25C13.2152 0 14 0.784799 14 1.75008V9.62541C14 10.5907 13.2152 11.3755 12.25 11.3755H8.45742L5.6875 13.4537Z",
38654
+ fill: "#212121"
38655
+ }));
38656
+
38317
38657
  // TrashIcon.jsx
38318
38658
  const TrashIcon = ({
38319
38659
  width = "14",
@@ -38354,27 +38694,44 @@ const DisabledTrashIcon = ({
38354
38694
  };
38355
38695
 
38356
38696
  // TableBody.jsx
38357
- const TableBody = /*#__PURE__*/React$1.forwardRef(({
38697
+ const TableBody = ({
38358
38698
  columns,
38359
38699
  data,
38360
38700
  onRowClick,
38361
38701
  onSendClick,
38362
38702
  buttonColor,
38363
38703
  onDeleteClick,
38704
+ selectedColor,
38364
38705
  resetFocus = false,
38365
38706
  onFocusChange,
38366
- indexToShimmer = 0
38367
- }, ref) => {
38707
+ indexToShimmer = 0,
38708
+ statuses = [{
38709
+ status: 'Pending',
38710
+ palette: ['#F5C9A7', '#8B4513']
38711
+ }, {
38712
+ status: 'Received',
38713
+ palette: ['#B9D5D5', '#2F4F4F']
38714
+ }, {
38715
+ status: 'Approved',
38716
+ palette: ['#BEDDC3', '#2D5016']
38717
+ }, {
38718
+ status: 'Cancelled',
38719
+ palette: ['#EBA6AF', '#8B1538']
38720
+ }],
38721
+ onCommentSave = () => {},
38722
+ ref = null
38723
+ }) => {
38368
38724
  const [hoveredRowIndex, setHoveredRowIndex] = React$1.useState(null);
38369
38725
  const [focusedRowIndex, setFocusedRowIndex] = React$1.useState(null);
38726
+ const [isCommentModalOpen, setIsCommentModalOpen] = React$1.useState(false);
38727
+ const [currentCommentRow, setCurrentCommentRow] = React$1.useState(null); // Track which row is being edited
38370
38728
 
38371
- // Expose methods to parent components via ref
38372
- React$1.useImperativeHandle(ref, () => ({
38373
- clearFocus: () => setFocusedRowIndex(null),
38374
- getFocusedRowIndex: () => focusedRowIndex
38375
- }));
38729
+ // Expose methods to parent components via ref (if ref is provided)
38730
+ // useImperativeHandle(ref, () => ({
38731
+ // clearFocus: () => setFocusedRowIndex(null),
38732
+ // getFocusedRowIndex: () => focusedRowIndex
38733
+ // }), [focusedRowIndex]);
38376
38734
 
38377
- // Handle resetFocus prop
38378
38735
  React$1.useEffect(() => {
38379
38736
  if (resetFocus) {
38380
38737
  setFocusedRowIndex(null);
@@ -38382,11 +38739,11 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
38382
38739
  }, [resetFocus]);
38383
38740
 
38384
38741
  // Notify parent of focus changes
38385
- React$1.useEffect(() => {
38386
- if (onFocusChange) {
38387
- onFocusChange(focusedRowIndex);
38388
- }
38389
- }, [focusedRowIndex, onFocusChange]);
38742
+ // useEffect(() => {
38743
+ // if (onFocusChange) {
38744
+ // onFocusChange(focusedRowIndex);
38745
+ // }
38746
+ // }, [focusedRowIndex, onFocusChange]);
38390
38747
 
38391
38748
  // Handle row click for focus state
38392
38749
  const handleRowClick = (row, rowIndex) => {
@@ -38396,6 +38753,21 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
38396
38753
  }
38397
38754
  };
38398
38755
 
38756
+ // Handle comment save
38757
+ const handleCommentSave = commentText => {
38758
+ if (currentCommentRow !== null) {
38759
+ onCommentSave(currentCommentRow, commentText);
38760
+ }
38761
+ setCurrentCommentRow(null);
38762
+ setIsCommentModalOpen(false);
38763
+ };
38764
+
38765
+ // Handle comment modal close
38766
+ const handleCommentModalClose = () => {
38767
+ setCurrentCommentRow(null);
38768
+ setIsCommentModalOpen(false);
38769
+ };
38770
+
38399
38771
  // Function to calculate tooltip height based on text length
38400
38772
  const calculateTooltipOffset = (text, isRegularCell = false) => {
38401
38773
  if (!text) return {
@@ -38531,6 +38903,57 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
38531
38903
  }), /*#__PURE__*/React__default["default"].createElement("span", null, "All Sent"));
38532
38904
  }
38533
38905
  return value;
38906
+ case 'status':
38907
+ const statusObj = statuses.find(status => status.status === value) || {};
38908
+ const [palette0, palette1] = statusObj.palette;
38909
+ return /*#__PURE__*/React__default["default"].createElement(StatusCell, {
38910
+ color: palette1
38911
+ }, /*#__PURE__*/React__default["default"].createElement(StatusCellCircle, {
38912
+ backgroundColor: palette0
38913
+ }), /*#__PURE__*/React__default["default"].createElement("span", null, value));
38914
+ case 'comments':
38915
+ const commentText = value || '';
38916
+ const hasComments = commentText.trim().length > 0;
38917
+
38918
+ // Truncate tooltip text if longer than 150 characters
38919
+ const commentTooltipText = commentText.length > 150 ? commentText.substring(0, 147) + '...' : commentText;
38920
+ return /*#__PURE__*/React__default["default"].createElement(CommentIconWrapper, {
38921
+ $buttonColor: buttonColor,
38922
+ ref: el => {
38923
+ if (el) {
38924
+ if (hasComments) {
38925
+ // Add tooltip if there are comments
38926
+ const rect = el.getBoundingClientRect();
38927
+ const {
38928
+ offset,
38929
+ height
38930
+ } = calculateTooltipOffset(commentTooltipText);
38931
+ el.style.setProperty('--tooltip-top', `${rect.top}px`);
38932
+ el.style.setProperty('--tooltip-left', `${rect.left}px`);
38933
+ el.style.setProperty('--tooltip-width', `${rect.width}px`);
38934
+ el.style.setProperty('--tooltip-offset', `${offset}px`);
38935
+ el.style.setProperty('--tooltip-height', `${height}px`);
38936
+ el.setAttribute('data-tooltip', commentTooltipText);
38937
+ } else {
38938
+ // Remove tooltip if there are no comments
38939
+ el.removeAttribute('data-tooltip');
38940
+ el.style.removeProperty('--tooltip-top');
38941
+ el.style.removeProperty('--tooltip-left');
38942
+ el.style.removeProperty('--tooltip-width');
38943
+ el.style.removeProperty('--tooltip-offset');
38944
+ el.style.removeProperty('--tooltip-height');
38945
+ }
38946
+ }
38947
+ },
38948
+ onClick: e => {
38949
+ e.stopPropagation();
38950
+ setCurrentCommentRow(rowIndex);
38951
+ setIsCommentModalOpen(true);
38952
+ }
38953
+ }, /*#__PURE__*/React__default["default"].createElement(CommentIcon, {
38954
+ showCircle: hasComments,
38955
+ circleColor: "#066768"
38956
+ }));
38534
38957
  case 'trash':
38535
38958
  // Only show trash icon when row is hovered
38536
38959
  if (hoveredRowIndex !== rowIndex) {
@@ -38594,11 +39017,12 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
38594
39017
  const shouldShowTooltip = (element, content) => {
38595
39018
  return element && element.scrollWidth > element.clientWidth;
38596
39019
  };
38597
- return /*#__PURE__*/React__default["default"].createElement(StyledTableBody, null, data.map((row, rowIndex) => /*#__PURE__*/React__default["default"].createElement(TableRow, {
39020
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(StyledTableBody, null, data.map((row, rowIndex) => /*#__PURE__*/React__default["default"].createElement(TableRow, {
38598
39021
  key: rowIndex,
38599
39022
  "data-row-index": rowIndex,
38600
39023
  className: indexToShimmer === rowIndex ? 'shimmer-row' : '',
38601
- $isFocused: focusedRowIndex === rowIndex,
39024
+ isFocused: focusedRowIndex === rowIndex,
39025
+ selectedColor: selectedColor,
38602
39026
  onMouseEnter: () => setHoveredRowIndex(rowIndex),
38603
39027
  onMouseLeave: () => setHoveredRowIndex(null),
38604
39028
  onClick: () => handleRowClick(row, rowIndex)
@@ -38627,8 +39051,13 @@ const TableBody = /*#__PURE__*/React$1.forwardRef(({
38627
39051
  $minWidth: column.minWidth,
38628
39052
  $maxWidth: column.maxWidth
38629
39053
  }, formattedValue);
38630
- }))));
38631
- });
39054
+ })))), /*#__PURE__*/React__default["default"].createElement(CommentModal, {
39055
+ isOpen: isCommentModalOpen,
39056
+ onClose: handleCommentModalClose,
39057
+ onSave: handleCommentSave,
39058
+ initialValue: currentCommentRow !== null ? data[currentCommentRow]?.Comments || '' : ''
39059
+ }));
39060
+ };
38632
39061
  TableBody.propTypes = {
38633
39062
  columns: PropTypes.array.isRequired,
38634
39063
  data: PropTypes.array.isRequired,
@@ -38638,7 +39067,9 @@ TableBody.propTypes = {
38638
39067
  onDeleteClick: PropTypes.func,
38639
39068
  resetFocus: PropTypes.bool,
38640
39069
  onFocusChange: PropTypes.func,
38641
- indexToShimmer: PropTypes.number
39070
+ indexToShimmer: PropTypes.number,
39071
+ onCommentSave: PropTypes.func,
39072
+ ref: PropTypes.object
38642
39073
  };
38643
39074
  TableBody.displayName = 'TableBody';
38644
39075
 
@@ -41809,7 +42240,7 @@ var Lottie = function Lottie(props) {
41809
42240
  };
41810
42241
 
41811
42242
  // Table.jsx
41812
- const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
42243
+ const Table = props => {
41813
42244
  const {
41814
42245
  width = '100%',
41815
42246
  height = 'auto',
@@ -41820,7 +42251,6 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41820
42251
  onButtonClick = () => {},
41821
42252
  buttonColor = '#066768',
41822
42253
  buttonHoverColor = '#388586',
41823
- // Updated props for new table structure
41824
42254
  columns = [],
41825
42255
  onRowClick = () => {},
41826
42256
  onSort,
@@ -41830,6 +42260,7 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41830
42260
  onSideButtonClick = () => {},
41831
42261
  sideButtonColor = '#066768',
41832
42262
  sideButtonHoverColor = '#388586',
42263
+ selectedColor = '#B4D1D2',
41833
42264
  children = null,
41834
42265
  tableBodyHeight = '728px',
41835
42266
  isLoading = false,
@@ -41849,7 +42280,10 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41849
42280
  clearFocusOnOutsideClick = true,
41850
42281
  // NEW: Props for edit mode focus management
41851
42282
  isEditMode = false,
41852
- editRowIndex = -1
42283
+ editRowIndex = -1,
42284
+ onCommentSave = () => {},
42285
+ // Accept ref as a regular prop
42286
+ ref = null
41853
42287
  } = props;
41854
42288
  const scrollWrapperRef = React$1.useRef(null);
41855
42289
  const tableBodyRef = React$1.useRef(null);
@@ -41868,11 +42302,16 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41868
42302
  onTableFocusChange(focusedRowIndex);
41869
42303
  };
41870
42304
 
41871
- // Expose methods to parent components via ref
42305
+ // Handle comment save - pass through to parent
42306
+ const handleCommentSave = (rowIndex, commentText) => {
42307
+ onCommentSave(rowIndex, commentText);
42308
+ };
42309
+
42310
+ // Expose methods to parent components via ref (if ref is provided)
41872
42311
  React$1.useImperativeHandle(ref, () => ({
41873
42312
  clearTableFocus,
41874
42313
  getTableBodyRef: () => tableBodyRef.current
41875
- }));
42314
+ }), []);
41876
42315
  React$1.useEffect(() => {
41877
42316
  const scrollWrapper = scrollWrapperRef.current;
41878
42317
  if (!scrollWrapper || !onLastRowsReached) return;
@@ -41950,9 +42389,11 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41950
42389
  columns: columns,
41951
42390
  indexToShimmer: indexToShimmer,
41952
42391
  data: data,
42392
+ selectedColor: selectedColor,
41953
42393
  onRowClick: onRowClick,
41954
42394
  onSendClick: onSendClick,
41955
42395
  onDeleteClick: onDeleteClick,
42396
+ onCommentSave: handleCommentSave,
41956
42397
  buttonColor: buttonColor,
41957
42398
  resetFocus: resetTableFocus,
41958
42399
  onFocusChange: handleTableFocusChange
@@ -41974,7 +42415,7 @@ const Table = /*#__PURE__*/React$1.forwardRef((props, ref) => {
41974
42415
  animationData: LoadingAnimation,
41975
42416
  loop: true
41976
42417
  }), /*#__PURE__*/React__default["default"].createElement(LoadingText, null, isLoadingText)))));
41977
- });
42418
+ };
41978
42419
 
41979
42420
  // Add displayName for better debugging
41980
42421
  Table.displayName = 'Table';