sag_components 2.0.0-beta140 → 2.0.0-beta142

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.
Files changed (28) hide show
  1. package/dist/index.d.ts +77 -2
  2. package/dist/index.esm.js +945 -123
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +955 -121
  5. package/dist/index.js.map +1 -1
  6. package/dist/types/components/MenuRoute/MenuIcons/AdvancedThresholds.d.ts +6 -0
  7. package/dist/types/components/MenuRoute/MenuIcons/Analytics.d.ts +6 -0
  8. package/dist/types/components/MenuRoute/MenuIcons/Budgets.d.ts +6 -0
  9. package/dist/types/components/MenuRoute/MenuIcons/Campaigns.d.ts +6 -0
  10. package/dist/types/components/MenuRoute/MenuIcons/Coupons.d.ts +6 -0
  11. package/dist/types/components/MenuRoute/MenuIcons/CustomerSegments.d.ts +6 -0
  12. package/dist/types/components/MenuRoute/MenuIcons/Dashboard.d.ts +6 -0
  13. package/dist/types/components/MenuRoute/MenuIcons/GroupBuilder.d.ts +6 -0
  14. package/dist/types/components/MenuRoute/MenuIcons/ItemsStores.d.ts +6 -0
  15. package/dist/types/components/MenuRoute/MenuIcons/PreTestWhatIf.d.ts +6 -0
  16. package/dist/types/components/MenuRoute/MenuIcons/RulesEngine.d.ts +6 -0
  17. package/dist/types/components/MenuRoute/MenuIcons/SampleRunEngine.d.ts +6 -0
  18. package/dist/types/components/MenuRoute/MenuRoute.stories.d.ts +118 -2
  19. package/dist/types/components/Table/CommentModal.d.ts +2 -0
  20. package/dist/types/components/Table/CommentModal.styles.d.ts +11 -0
  21. package/dist/types/components/Table/Table.d.ts +4 -2
  22. package/dist/types/components/Table/Table.stories.d.ts +23 -91
  23. package/dist/types/components/Table/TableBody.d.ts +31 -2
  24. package/dist/types/components/Table/TableBody.styles.d.ts +1 -0
  25. package/dist/types/components/Table/data.d.ts +206 -0
  26. package/dist/types/icons/CommentIcon.d.ts +7 -0
  27. package/dist/types/index.d.ts +12 -0
  28. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import React$1, { useState, useRef, useEffect, useMemo, useCallback, forwardRef, useImperativeHandle } from 'react';
1
+ import React$1, { useState, useRef, useEffect, useMemo, useCallback, useImperativeHandle } from 'react';
2
2
  import styled, { keyframes, css } from 'styled-components';
3
3
  import { ResponsiveContainer, PieChart as PieChart$1, Pie, Cell, Tooltip as Tooltip$3, BarChart as BarChart$1, CartesianGrid, XAxis, YAxis, Bar, LabelList, ReferenceLine, LineChart, Line, AreaChart as AreaChart$1, Legend, Area, ScatterChart, ZAxis, Scatter, Brush, ComposedChart } from 'recharts';
4
4
  import Skeleton, { SkeletonTheme } from 'react-loading-skeleton';
@@ -10317,23 +10317,24 @@ const QuarterPopupPicker = ({
10317
10317
  };
10318
10318
 
10319
10319
  /* eslint-disable import/no-extraneous-dependencies */
10320
- const QuarterPicker = ({
10321
- availableQuarters,
10322
- // ["Q1-2024"]
10323
- label,
10324
- onChange,
10325
- borderRadius,
10326
- required,
10327
- width,
10328
- height,
10329
- placeholder,
10330
- disabled,
10331
- borderColor,
10332
- borderColorFocus,
10333
- textColor,
10334
- selectedValue,
10335
- startYear
10336
- }) => {
10320
+ const QuarterPicker = _ref => {
10321
+ let {
10322
+ availableQuarters,
10323
+ // ["Q1-2024"]
10324
+ label,
10325
+ onChange,
10326
+ borderRadius,
10327
+ required,
10328
+ width,
10329
+ height,
10330
+ placeholder,
10331
+ disabled,
10332
+ borderColor,
10333
+ borderColorFocus,
10334
+ textColor,
10335
+ selectedValue,
10336
+ startYear
10337
+ } = _ref;
10337
10338
  const [isFocused, setIsFocused] = useState(false);
10338
10339
  const [isOpen, setIsOpen] = useState(false);
10339
10340
  const [value, setValue] = useState('');
@@ -10775,22 +10776,23 @@ const MonthPopupPicker = ({
10775
10776
  };
10776
10777
 
10777
10778
  /* eslint-disable import/no-extraneous-dependencies */
10778
- const MonthPicker = ({
10779
- availableMonths,
10780
- label,
10781
- onChange,
10782
- borderRadius,
10783
- required,
10784
- width,
10785
- height,
10786
- placeholder,
10787
- disabled,
10788
- borderColor,
10789
- borderColorFocus,
10790
- textColor,
10791
- selectedValue,
10792
- startYear
10793
- }) => {
10779
+ const MonthPicker = _ref => {
10780
+ let {
10781
+ availableMonths,
10782
+ label,
10783
+ onChange,
10784
+ borderRadius,
10785
+ required,
10786
+ width,
10787
+ height,
10788
+ placeholder,
10789
+ disabled,
10790
+ borderColor,
10791
+ borderColorFocus,
10792
+ textColor,
10793
+ selectedValue,
10794
+ startYear
10795
+ } = _ref;
10794
10796
  const [isFocused, setIsFocused] = useState(false);
10795
10797
  const [isOpen, setIsOpen] = useState(false);
10796
10798
  const [value, setValue] = useState('');
@@ -13068,17 +13070,17 @@ const Modal$1 = styled.div`
13068
13070
  margin: 0 auto;
13069
13071
  ${scrollableStyles$a}
13070
13072
  `;
13071
- const ModalHeader$1 = styled.div`
13073
+ const ModalHeader$2 = styled.div`
13072
13074
  display: flex;
13073
13075
  align-items: center;
13074
13076
  justify-content: space-between;
13075
13077
  margin-bottom: 32px;
13076
13078
  `;
13077
- const ModalBody$1 = styled.div`
13079
+ const ModalBody$2 = styled.div`
13078
13080
  ${scrollableStyles$a}
13079
13081
  max-height: 80vh;
13080
13082
  `;
13081
- const ModalTitle$2 = styled.h5`
13083
+ const ModalTitle$3 = styled.h5`
13082
13084
  font-family: 'Poppins', sans-serif;
13083
13085
  font-size: 32px;
13084
13086
  font-weight: 500;
@@ -13110,12 +13112,12 @@ const DialogOverlay$1 = props => {
13110
13112
  };
13111
13113
  return /*#__PURE__*/React.createElement(ModalWrapper$1, {
13112
13114
  className: className
13113
- }, /*#__PURE__*/React.createElement(Modal$1, null, /*#__PURE__*/React.createElement(ModalHeader$1, null, /*#__PURE__*/React.createElement(ModalTitle$2, null, title), /*#__PURE__*/React.createElement(ModalClose, {
13115
+ }, /*#__PURE__*/React.createElement(Modal$1, null, /*#__PURE__*/React.createElement(ModalHeader$2, null, /*#__PURE__*/React.createElement(ModalTitle$3, null, title), /*#__PURE__*/React.createElement(ModalClose, {
13114
13116
  type: "button",
13115
13117
  onClick: closeModal
13116
13118
  }, /*#__PURE__*/React.createElement(CloseXIcon, {
13117
13119
  fill: "white"
13118
- }))), /*#__PURE__*/React.createElement(ModalBody$1, {
13120
+ }))), /*#__PURE__*/React.createElement(ModalBody$2, {
13119
13121
  id: "modalBody"
13120
13122
  }, children)));
13121
13123
  };
@@ -23901,21 +23903,22 @@ const DeleteIcon = styled.div`
23901
23903
  position: absolute;
23902
23904
  `;
23903
23905
 
23904
- const QuickFilterDropdownSingle = ({
23905
- label,
23906
- hoverColor,
23907
- options,
23908
- selectedValue,
23909
- placeHolder,
23910
- onChange,
23911
- disabled,
23912
- width,
23913
- error,
23914
- errorMessage,
23915
- xIconShow,
23916
- labelColor,
23917
- showLabelOnTop
23918
- }) => {
23906
+ const QuickFilterDropdownSingle = _ref => {
23907
+ let {
23908
+ label,
23909
+ hoverColor,
23910
+ options,
23911
+ selectedValue,
23912
+ placeHolder,
23913
+ onChange,
23914
+ disabled,
23915
+ width,
23916
+ error,
23917
+ errorMessage,
23918
+ xIconShow,
23919
+ labelColor,
23920
+ showLabelOnTop
23921
+ } = _ref;
23919
23922
  const [isFocused, setIsFocused] = useState(false);
23920
23923
  const [showOptions, setShowOptions] = useState(false);
23921
23924
  const [inputValue, setInputValue] = useState("");
@@ -24312,23 +24315,24 @@ const IconContainer$2 = styled.div`
24312
24315
  cursor: pointer;
24313
24316
  `;
24314
24317
 
24315
- const QuickFilterDropdownMultiSelection = ({
24316
- label,
24317
- labelEmptyValue,
24318
- options,
24319
- selectedValue,
24320
- placeHolder,
24321
- onChange,
24322
- required,
24323
- disabled,
24324
- width,
24325
- error,
24326
- errorMessage,
24327
- labelColor,
24328
- xIconShow,
24329
- checkBoxColor,
24330
- showLabelOnTop
24331
- }) => {
24318
+ const QuickFilterDropdownMultiSelection = _ref => {
24319
+ let {
24320
+ label,
24321
+ labelEmptyValue,
24322
+ options,
24323
+ selectedValue,
24324
+ placeHolder,
24325
+ onChange,
24326
+ required,
24327
+ disabled,
24328
+ width,
24329
+ error,
24330
+ errorMessage,
24331
+ labelColor,
24332
+ xIconShow,
24333
+ checkBoxColor,
24334
+ showLabelOnTop
24335
+ } = _ref;
24332
24336
  const [isFocused, setIsFocused] = useState(false);
24333
24337
  const [showOptions, setShowOptions] = useState(false);
24334
24338
  const [inputValue, setInputValue] = useState('');
@@ -27205,7 +27209,7 @@ const scrollableStyles$6 = `
27205
27209
  }
27206
27210
  `;
27207
27211
  const MainContainer$1 = styled.div``;
27208
- const ModalOverlay$1 = styled.div`
27212
+ const ModalOverlay$2 = styled.div`
27209
27213
  position: fixed;
27210
27214
  z-index: 100;
27211
27215
  top: 0;
@@ -27217,7 +27221,7 @@ const ModalOverlay$1 = styled.div`
27217
27221
  justify-content: center;
27218
27222
  align-items: center;
27219
27223
  `;
27220
- const ModalContent$1 = styled.div`
27224
+ const ModalContent$2 = styled.div`
27221
27225
  font-family: "Poppins", sans-serif;
27222
27226
  font-weight: 500;
27223
27227
  font-size: 18px;
@@ -27447,10 +27451,10 @@ const PopupCharts = props => {
27447
27451
  }, displayChart(item)));
27448
27452
  return /*#__PURE__*/React$1.createElement(MainContainer$1, {
27449
27453
  id: "MainContainer"
27450
- }, IsPopupChartsOpen && /*#__PURE__*/React$1.createElement(ModalOverlay$1, {
27454
+ }, IsPopupChartsOpen && /*#__PURE__*/React$1.createElement(ModalOverlay$2, {
27451
27455
  id: "ModalOverlay",
27452
27456
  className: "modal-overlay"
27453
- }, /*#__PURE__*/React$1.createElement(ModalContent$1, {
27457
+ }, /*#__PURE__*/React$1.createElement(ModalContent$2, {
27454
27458
  id: "ModalContent",
27455
27459
  ref: divRef,
27456
27460
  className: "modal-content",
@@ -33803,7 +33807,7 @@ const Overlay$2 = styled.div`
33803
33807
  align-items: center;
33804
33808
  z-index: 999;
33805
33809
  `;
33806
- const ModalContent = styled.div`
33810
+ const ModalContent$1 = styled.div`
33807
33811
  position: absolute;
33808
33812
  width: 70%;
33809
33813
  height: 80%;
@@ -33829,7 +33833,7 @@ const Header$3 = styled.div`
33829
33833
  align-items: flex-start;
33830
33834
  }
33831
33835
  `;
33832
- const CloseButton$1 = styled.button`
33836
+ const CloseButton$2 = styled.button`
33833
33837
  position: absolute;
33834
33838
  top: -10px;
33835
33839
  right: 0px;
@@ -34026,11 +34030,11 @@ const InsightsCarousel = _ref => {
34026
34030
  const nextIndex = (currentIndex + 1) % totalChildren;
34027
34031
  return /*#__PURE__*/React$1.createElement(Overlay$2, {
34028
34032
  className: className
34029
- }, /*#__PURE__*/React$1.createElement(ModalContent, null, /*#__PURE__*/React$1.createElement(Header$3, null, /*#__PURE__*/React$1.createElement(Title$8, {
34033
+ }, /*#__PURE__*/React$1.createElement(ModalContent$1, null, /*#__PURE__*/React$1.createElement(Header$3, null, /*#__PURE__*/React$1.createElement(Title$8, {
34030
34034
  $titleColor: titleColor
34031
34035
  }, /*#__PURE__*/React$1.cloneElement(icon, {
34032
34036
  fill: iconColor
34033
- }), title), /*#__PURE__*/React$1.createElement(CloseButton$1, {
34037
+ }), title), /*#__PURE__*/React$1.createElement(CloseButton$2, {
34034
34038
  onClick: () => onClose?.({
34035
34039
  label: "closeCarousel"
34036
34040
  }),
@@ -34347,7 +34351,7 @@ const Modal = styled.div`
34347
34351
  border-radius: 12px;
34348
34352
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
34349
34353
  `;
34350
- const ModalHeader = styled.div`
34354
+ const ModalHeader$1 = styled.div`
34351
34355
  display: flex;
34352
34356
  justify-content: space-between;
34353
34357
  `;
@@ -34355,12 +34359,12 @@ const ModalButtons = styled.div`
34355
34359
  display: flex;
34356
34360
  gap: 10px;
34357
34361
  `;
34358
- const ModalTitle$1 = styled.h3`
34362
+ const ModalTitle$2 = styled.h3`
34359
34363
  margin: 0;
34360
34364
  font-size: 24px;
34361
34365
  font-weight: 500;
34362
34366
  `;
34363
- const ModalBody = styled.div`
34367
+ const ModalBody$1 = styled.div`
34364
34368
  width: 100%;
34365
34369
  height: 100%;
34366
34370
  `;
@@ -34411,9 +34415,9 @@ const ModalWithOverlay = props => {
34411
34415
  width,
34412
34416
  height
34413
34417
  }
34414
- }, /*#__PURE__*/React$1.createElement(ModalHeader, {
34418
+ }, /*#__PURE__*/React$1.createElement(ModalHeader$1, {
34415
34419
  className: "modal-header"
34416
- }, /*#__PURE__*/React$1.createElement(ModalTitle$1, null, title), /*#__PURE__*/React$1.createElement(ModalButtons, {
34420
+ }, /*#__PURE__*/React$1.createElement(ModalTitle$2, null, title), /*#__PURE__*/React$1.createElement(ModalButtons, {
34417
34421
  className: "modal-buttons"
34418
34422
  }, showCancelButton && /*#__PURE__*/React$1.createElement(Button$1, {
34419
34423
  size: "medium",
@@ -34460,7 +34464,7 @@ const ModalWithOverlay = props => {
34460
34464
  backgroundColor: okButtonColor,
34461
34465
  hoverBorderColor: okButtonHoverBackgroundColor,
34462
34466
  hoverBackgroundColor: okButtonHoverBackgroundColor
34463
- })))), /*#__PURE__*/React$1.createElement(ModalBody, {
34467
+ })))), /*#__PURE__*/React$1.createElement(ModalBody$1, {
34464
34468
  className: "modal-body"
34465
34469
  }, children)));
34466
34470
  };
@@ -35560,9 +35564,9 @@ const ToggleSlider = styled.span`
35560
35564
  }
35561
35565
  `;
35562
35566
 
35563
- /**
35564
- * ToggleSwitch component for on/off states.
35565
- * Supports small/large sizes and disabled state.
35567
+ /**
35568
+ * ToggleSwitch component for on/off states.
35569
+ * Supports small/large sizes and disabled state.
35566
35570
  */
35567
35571
  function ToggleSwitch(_ref) {
35568
35572
  let {
@@ -35697,9 +35701,12 @@ const ContainerTable = props => {
35697
35701
 
35698
35702
  const MenuRouteContainer = styled.div`
35699
35703
  font-family: 'Poppins', sans-serif;
35704
+ width: ${props => props.width || '100%'};
35700
35705
  `;
35701
35706
  const ButtonGroup = styled.div`
35702
35707
  display: flex;
35708
+ flex-direction: ${props => props.layout === 'vertical' ? 'column' : 'row'};
35709
+ gap: ${props => props.layout === 'vertical' ? '20px' : '0px'};
35703
35710
  justify-content: ${props => {
35704
35711
  switch (props.pos) {
35705
35712
  case 'left':
@@ -35719,14 +35726,32 @@ const Button = styled.button`
35719
35726
  display: flex;
35720
35727
  gap: 12px;
35721
35728
  align-items: center;
35722
- color: #212121;
35723
- padding: 0 24px 10px;
35724
- font-size: 16px;
35725
- font-weight: 600;
35729
+ color: ${props => props.notSelectedColor || '#212121'};
35730
+ padding: 12px 24px;
35731
+ font-family: 'Poppins', sans-serif;
35732
+ font-size: ${props => props.fontSize || '16px'};
35733
+ font-weight: ${props => props.fontWeight || '600'};
35734
+ border-radius: 8px;
35735
+ cursor: pointer;
35736
+ min-height: 44px;
35737
+ box-sizing: border-box;
35738
+ position: relative;
35726
35739
 
35727
35740
  &.active {
35728
35741
  color: ${props => props.color || '#066768'};
35729
- border-bottom: 3px solid ${props => props.color || '#066768'};
35742
+ background-color: ${props => props.selectedBackgroundColor || 'transparent'};
35743
+
35744
+ ${props => props.layout !== 'vertical' && `
35745
+ &::after {
35746
+ content: '';
35747
+ position: absolute;
35748
+ bottom: 0;
35749
+ left: 0;
35750
+ right: 0;
35751
+ height: 3px;
35752
+ background-color: ${props.color || '#066768'};
35753
+ }
35754
+ `}
35730
35755
  }
35731
35756
 
35732
35757
  &:disabled {
@@ -35738,6 +35763,14 @@ const Button = styled.button`
35738
35763
  const MenuRoute = props => {
35739
35764
  const {
35740
35765
  tabsPosition,
35766
+ layout = 'horizontal',
35767
+ width = '100%',
35768
+ fontSize = '16px',
35769
+ fontWeight = '600',
35770
+ notSelectedColor = '#212121',
35771
+ selectedBackgroundColor = 'transparent',
35772
+ iconSize = '24',
35773
+ iconColor = '#212121',
35741
35774
  items,
35742
35775
  color,
35743
35776
  selecetIndex = 0,
@@ -35760,16 +35793,26 @@ const MenuRoute = props => {
35760
35793
  onTabClick(key);
35761
35794
  }
35762
35795
  };
35763
- return /*#__PURE__*/React$1.createElement(MenuRouteContainer, null, /*#__PURE__*/React$1.createElement(ButtonGroup, {
35764
- pos: tabsPosition
35796
+ return /*#__PURE__*/React$1.createElement(MenuRouteContainer, {
35797
+ width: width
35798
+ }, /*#__PURE__*/React$1.createElement(ButtonGroup, {
35799
+ pos: tabsPosition,
35800
+ layout: layout
35765
35801
  }, items.map(item => /*#__PURE__*/React$1.createElement(Button, {
35766
35802
  key: item.key,
35767
35803
  onClick: () => handleItemClick(item.key, item),
35768
35804
  disabled: item.disabled,
35769
35805
  className: activeItem === item.key ? 'active' : '',
35770
- color: color
35806
+ color: color,
35807
+ layout: layout,
35808
+ fontSize: fontSize,
35809
+ fontWeight: fontWeight,
35810
+ notSelectedColor: notSelectedColor,
35811
+ selectedBackgroundColor: selectedBackgroundColor
35771
35812
  }, item.icon && /*#__PURE__*/React$1.cloneElement(item.icon, {
35772
- fill: item.disabled ? '#717171' : activeItem === item.key ? color : item.icon.props.fill
35813
+ width: iconSize,
35814
+ height: iconSize,
35815
+ fill: item.disabled ? '#717171' : activeItem === item.key ? color : iconColor
35773
35816
  }), /*#__PURE__*/React$1.isValidElement(item.label) ? item.label : item.label))));
35774
35817
  };
35775
35818
 
@@ -35846,6 +35889,380 @@ const Execute = _ref => {
35846
35889
  }));
35847
35890
  };
35848
35891
 
35892
+ const Dashboard = _ref => {
35893
+ let {
35894
+ width = '24',
35895
+ height = '24',
35896
+ fill = "#212121"
35897
+ } = _ref;
35898
+ return /*#__PURE__*/React$1.createElement("svg", {
35899
+ width: width,
35900
+ height: height,
35901
+ viewBox: "0 0 24 24",
35902
+ fill: "none",
35903
+ xmlns: "http://www.w3.org/2000/svg"
35904
+ }, /*#__PURE__*/React$1.createElement("path", {
35905
+ d: "M3 3H10V11H3V3ZM14 3H21V7H14V3ZM14 11H21V21H14V11ZM3 15H10V21H3V15Z",
35906
+ fill: fill
35907
+ }), /*#__PURE__*/React$1.createElement("path", {
35908
+ d: "M4 4V10H9V4H4ZM15 4V6H20V4H15ZM15 12V20H20V12H15ZM4 16V20H9V16H4Z",
35909
+ fill: "none",
35910
+ stroke: fill,
35911
+ strokeWidth: "0.5"
35912
+ }));
35913
+ };
35914
+
35915
+ const Campaigns = _ref => {
35916
+ let {
35917
+ width = '24',
35918
+ height = '24',
35919
+ fill = "#212121"
35920
+ } = _ref;
35921
+ return /*#__PURE__*/React$1.createElement("svg", {
35922
+ width: width,
35923
+ height: height,
35924
+ viewBox: "0 0 24 24",
35925
+ fill: "none",
35926
+ xmlns: "http://www.w3.org/2000/svg"
35927
+ }, /*#__PURE__*/React$1.createElement("path", {
35928
+ d: "M12 2L13.09 8.26L20.5 7L18.5 13.74L21 20L13.09 15.74L12 22L10.91 15.74L3 20L5.5 13.74L2.5 7L9.91 8.26L12 2Z",
35929
+ fill: fill
35930
+ }));
35931
+ };
35932
+
35933
+ const Budgets = _ref => {
35934
+ let {
35935
+ width = '24',
35936
+ height = '24',
35937
+ fill = "#212121"
35938
+ } = _ref;
35939
+ return /*#__PURE__*/React$1.createElement("svg", {
35940
+ width: width,
35941
+ height: height,
35942
+ viewBox: "0 0 24 24",
35943
+ fill: "none",
35944
+ xmlns: "http://www.w3.org/2000/svg"
35945
+ }, /*#__PURE__*/React$1.createElement("path", {
35946
+ d: "M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM13.5 6L15.5 7.5L14 9H16V11H13V13H16V15H13V17H11V15H9V13H10.5L12 11.5V9.5L10.5 8H9V6H11V4H13V6H13.5Z",
35947
+ fill: fill
35948
+ }));
35949
+ };
35950
+
35951
+ const SampleRunEngine = _ref => {
35952
+ let {
35953
+ width = '24',
35954
+ height = '24',
35955
+ fill = "#212121"
35956
+ } = _ref;
35957
+ return /*#__PURE__*/React$1.createElement("svg", {
35958
+ width: width,
35959
+ height: height,
35960
+ viewBox: "0 0 24 24",
35961
+ fill: "none",
35962
+ xmlns: "http://www.w3.org/2000/svg"
35963
+ }, /*#__PURE__*/React$1.createElement("path", {
35964
+ d: "M12 2L15.09 8.26L22 9L17 14L18.18 21L12 17.27L5.82 21L7 14L2 9L8.91 8.26L12 2Z",
35965
+ fill: "none",
35966
+ stroke: fill,
35967
+ strokeWidth: "1.5"
35968
+ }), /*#__PURE__*/React$1.createElement("circle", {
35969
+ cx: "12",
35970
+ cy: "12",
35971
+ r: "3",
35972
+ fill: fill
35973
+ }));
35974
+ };
35975
+
35976
+ const Coupons = _ref => {
35977
+ let {
35978
+ width = '24',
35979
+ height = '24',
35980
+ fill = "#212121"
35981
+ } = _ref;
35982
+ return /*#__PURE__*/React$1.createElement("svg", {
35983
+ width: width,
35984
+ height: height,
35985
+ viewBox: "0 0 24 24",
35986
+ fill: "none",
35987
+ xmlns: "http://www.w3.org/2000/svg"
35988
+ }, /*#__PURE__*/React$1.createElement("path", {
35989
+ d: "M21 7V5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V7C4.1 7 5 7.9 5 9S4.1 11 3 11V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V11C19.9 11 19 10.1 19 9S19.9 7 21 7Z",
35990
+ fill: fill
35991
+ }), /*#__PURE__*/React$1.createElement("circle", {
35992
+ cx: "9",
35993
+ cy: "9",
35994
+ r: "1",
35995
+ fill: "white"
35996
+ }), /*#__PURE__*/React$1.createElement("circle", {
35997
+ cx: "15",
35998
+ cy: "9",
35999
+ r: "1",
36000
+ fill: "white"
36001
+ }), /*#__PURE__*/React$1.createElement("circle", {
36002
+ cx: "9",
36003
+ cy: "15",
36004
+ r: "1",
36005
+ fill: "white"
36006
+ }), /*#__PURE__*/React$1.createElement("circle", {
36007
+ cx: "15",
36008
+ cy: "15",
36009
+ r: "1",
36010
+ fill: "white"
36011
+ }));
36012
+ };
36013
+
36014
+ const RulesEngine = _ref => {
36015
+ let {
36016
+ width = '24',
36017
+ height = '24',
36018
+ fill = "#212121"
36019
+ } = _ref;
36020
+ return /*#__PURE__*/React$1.createElement("svg", {
36021
+ width: width,
36022
+ height: height,
36023
+ viewBox: "0 0 24 24",
36024
+ fill: "none",
36025
+ xmlns: "http://www.w3.org/2000/svg"
36026
+ }, /*#__PURE__*/React$1.createElement("path", {
36027
+ d: "M8 3L4 9L8 15H12L16 9L12 3H8Z",
36028
+ fill: fill
36029
+ }), /*#__PURE__*/React$1.createElement("path", {
36030
+ d: "M13 21L9 15L13 9L17 15L13 21Z",
36031
+ fill: fill
36032
+ }), /*#__PURE__*/React$1.createElement("circle", {
36033
+ cx: "12",
36034
+ cy: "12",
36035
+ r: "2",
36036
+ fill: "white"
36037
+ }));
36038
+ };
36039
+
36040
+ const AdvancedThresholds = _ref => {
36041
+ let {
36042
+ width = '24',
36043
+ height = '24',
36044
+ fill = "#212121"
36045
+ } = _ref;
36046
+ return /*#__PURE__*/React$1.createElement("svg", {
36047
+ width: width,
36048
+ height: height,
36049
+ viewBox: "0 0 24 24",
36050
+ fill: "none",
36051
+ xmlns: "http://www.w3.org/2000/svg"
36052
+ }, /*#__PURE__*/React$1.createElement("circle", {
36053
+ cx: "12",
36054
+ cy: "12",
36055
+ r: "9",
36056
+ fill: "none",
36057
+ stroke: fill,
36058
+ strokeWidth: "1.5"
36059
+ }), /*#__PURE__*/React$1.createElement("circle", {
36060
+ cx: "12",
36061
+ cy: "12",
36062
+ r: "6",
36063
+ fill: "none",
36064
+ stroke: fill,
36065
+ strokeWidth: "1.5"
36066
+ }), /*#__PURE__*/React$1.createElement("circle", {
36067
+ cx: "12",
36068
+ cy: "12",
36069
+ r: "3",
36070
+ fill: "none",
36071
+ stroke: fill,
36072
+ strokeWidth: "1.5"
36073
+ }), /*#__PURE__*/React$1.createElement("circle", {
36074
+ cx: "12",
36075
+ cy: "12",
36076
+ r: "1",
36077
+ fill: fill
36078
+ }));
36079
+ };
36080
+
36081
+ const PreTestWhatIf = _ref => {
36082
+ let {
36083
+ width = '24',
36084
+ height = '24',
36085
+ fill = "#212121"
36086
+ } = _ref;
36087
+ return /*#__PURE__*/React$1.createElement("svg", {
36088
+ width: width,
36089
+ height: height,
36090
+ viewBox: "0 0 24 24",
36091
+ fill: "none",
36092
+ xmlns: "http://www.w3.org/2000/svg"
36093
+ }, /*#__PURE__*/React$1.createElement("path", {
36094
+ d: "M12 2L2 7L12 12L22 7L12 2Z",
36095
+ fill: fill
36096
+ }), /*#__PURE__*/React$1.createElement("path", {
36097
+ d: "M2 17L12 22L22 17",
36098
+ fill: "none",
36099
+ stroke: fill,
36100
+ strokeWidth: "1.5"
36101
+ }), /*#__PURE__*/React$1.createElement("path", {
36102
+ d: "M2 12L12 17L22 12",
36103
+ fill: "none",
36104
+ stroke: fill,
36105
+ strokeWidth: "1.5"
36106
+ }));
36107
+ };
36108
+
36109
+ const CustomerSegments = _ref => {
36110
+ let {
36111
+ width = '24',
36112
+ height = '24',
36113
+ fill = "#212121"
36114
+ } = _ref;
36115
+ return /*#__PURE__*/React$1.createElement("svg", {
36116
+ width: width,
36117
+ height: height,
36118
+ viewBox: "0 0 24 24",
36119
+ fill: "none",
36120
+ xmlns: "http://www.w3.org/2000/svg"
36121
+ }, /*#__PURE__*/React$1.createElement("circle", {
36122
+ cx: "9",
36123
+ cy: "7",
36124
+ r: "4",
36125
+ fill: fill
36126
+ }), /*#__PURE__*/React$1.createElement("path", {
36127
+ d: "M3 21V19C3 16.79 4.79 15 7 15H11C13.21 15 15 16.79 15 19V21",
36128
+ fill: fill
36129
+ }), /*#__PURE__*/React$1.createElement("circle", {
36130
+ cx: "17",
36131
+ cy: "7",
36132
+ r: "3",
36133
+ fill: fill
36134
+ }), /*#__PURE__*/React$1.createElement("path", {
36135
+ d: "M21 21V20C21 18.35 19.65 17 18 17H16C15.45 17 14.95 17.22 14.59 17.59",
36136
+ fill: fill
36137
+ }));
36138
+ };
36139
+
36140
+ const GroupBuilder = _ref => {
36141
+ let {
36142
+ width = '24',
36143
+ height = '24',
36144
+ fill = "#212121"
36145
+ } = _ref;
36146
+ return /*#__PURE__*/React$1.createElement("svg", {
36147
+ width: width,
36148
+ height: height,
36149
+ viewBox: "0 0 24 24",
36150
+ fill: "none",
36151
+ xmlns: "http://www.w3.org/2000/svg"
36152
+ }, /*#__PURE__*/React$1.createElement("circle", {
36153
+ cx: "6",
36154
+ cy: "6",
36155
+ r: "3",
36156
+ fill: fill
36157
+ }), /*#__PURE__*/React$1.createElement("circle", {
36158
+ cx: "18",
36159
+ cy: "6",
36160
+ r: "3",
36161
+ fill: fill
36162
+ }), /*#__PURE__*/React$1.createElement("circle", {
36163
+ cx: "6",
36164
+ cy: "18",
36165
+ r: "3",
36166
+ fill: fill
36167
+ }), /*#__PURE__*/React$1.createElement("circle", {
36168
+ cx: "18",
36169
+ cy: "18",
36170
+ r: "3",
36171
+ fill: fill
36172
+ }), /*#__PURE__*/React$1.createElement("path", {
36173
+ d: "M9 6H15",
36174
+ stroke: fill,
36175
+ strokeWidth: "1.5"
36176
+ }), /*#__PURE__*/React$1.createElement("path", {
36177
+ d: "M6 9V15",
36178
+ stroke: fill,
36179
+ strokeWidth: "1.5"
36180
+ }), /*#__PURE__*/React$1.createElement("path", {
36181
+ d: "M18 9V15",
36182
+ stroke: fill,
36183
+ strokeWidth: "1.5"
36184
+ }), /*#__PURE__*/React$1.createElement("path", {
36185
+ d: "M9 18H15",
36186
+ stroke: fill,
36187
+ strokeWidth: "1.5"
36188
+ }));
36189
+ };
36190
+
36191
+ const ItemsStores = _ref => {
36192
+ let {
36193
+ width = '24',
36194
+ height = '24',
36195
+ fill = "#212121"
36196
+ } = _ref;
36197
+ return /*#__PURE__*/React$1.createElement("svg", {
36198
+ width: width,
36199
+ height: height,
36200
+ viewBox: "0 0 24 24",
36201
+ fill: "none",
36202
+ xmlns: "http://www.w3.org/2000/svg"
36203
+ }, /*#__PURE__*/React$1.createElement("path", {
36204
+ d: "M7 4V2C7 1.45 7.45 1 8 1H16C16.55 1 17 1.45 17 2V4H20C20.55 4 21 4.45 21 5S20.55 6 20 6H19V19C19 20.1 18.1 21 17 21H7C5.9 21 5 20.1 5 19V6H4C3.45 6 3 5.55 3 5S3.45 4 4 4H7Z",
36205
+ fill: fill
36206
+ }), /*#__PURE__*/React$1.createElement("path", {
36207
+ d: "M9 8V17",
36208
+ stroke: "white",
36209
+ strokeWidth: "1"
36210
+ }), /*#__PURE__*/React$1.createElement("path", {
36211
+ d: "M12 8V17",
36212
+ stroke: "white",
36213
+ strokeWidth: "1"
36214
+ }), /*#__PURE__*/React$1.createElement("path", {
36215
+ d: "M15 8V17",
36216
+ stroke: "white",
36217
+ strokeWidth: "1"
36218
+ }));
36219
+ };
36220
+
36221
+ const Analytics = _ref => {
36222
+ let {
36223
+ width = '24',
36224
+ height = '24',
36225
+ fill = "#212121"
36226
+ } = _ref;
36227
+ return /*#__PURE__*/React$1.createElement("svg", {
36228
+ width: width,
36229
+ height: height,
36230
+ viewBox: "0 0 24 24",
36231
+ fill: "none",
36232
+ xmlns: "http://www.w3.org/2000/svg"
36233
+ }, /*#__PURE__*/React$1.createElement("path", {
36234
+ d: "M3 3V21H21",
36235
+ fill: "none",
36236
+ stroke: fill,
36237
+ strokeWidth: "1.5"
36238
+ }), /*#__PURE__*/React$1.createElement("path", {
36239
+ d: "M7 16L12 11L16 15L21 10",
36240
+ fill: "none",
36241
+ stroke: fill,
36242
+ strokeWidth: "1.5"
36243
+ }), /*#__PURE__*/React$1.createElement("circle", {
36244
+ cx: "7",
36245
+ cy: "16",
36246
+ r: "2",
36247
+ fill: fill
36248
+ }), /*#__PURE__*/React$1.createElement("circle", {
36249
+ cx: "12",
36250
+ cy: "11",
36251
+ r: "2",
36252
+ fill: fill
36253
+ }), /*#__PURE__*/React$1.createElement("circle", {
36254
+ cx: "16",
36255
+ cy: "15",
36256
+ r: "2",
36257
+ fill: fill
36258
+ }), /*#__PURE__*/React$1.createElement("circle", {
36259
+ cx: "21",
36260
+ cy: "10",
36261
+ r: "2",
36262
+ fill: fill
36263
+ }));
36264
+ };
36265
+
35849
36266
  const scrollableStyles$1 = `
35850
36267
  &::-webkit-scrollbar {
35851
36268
  height: 8px;
@@ -37633,6 +38050,7 @@ const TableRow = styled.tr`
37633
38050
  transition: all 0.3s ease;
37634
38051
  font-family: "Poppins", sans-serif;
37635
38052
  position: relative;
38053
+ background-color: ${props => props.isFocused ? props.selectedColor : "white"};
37636
38054
 
37637
38055
  &:hover {
37638
38056
  background-color: #e6f0f0;
@@ -37845,6 +38263,27 @@ const TrashIconWrapper = styled.div`
37845
38263
  }
37846
38264
  }
37847
38265
  `;
38266
+ const CommentIconWrapper = styled.div`
38267
+ cursor: pointer;
38268
+ transition: color 0.2s ease;
38269
+ display: inline-flex;
38270
+ align-items: center;
38271
+ justify-content: center;
38272
+ width: 100%;
38273
+ height: 100%;
38274
+ position: relative;
38275
+
38276
+ ${tooltipStyles}
38277
+
38278
+ /* Override tooltip position to move left */
38279
+ &[data-tooltip]:hover::before {
38280
+ left: calc(var(--tooltip-left, 0px) + var(--tooltip-width, 0px) / 2 - 50px);
38281
+ }
38282
+
38283
+ &[data-tooltip]:hover::after {
38284
+ left: calc(var(--tooltip-left, 0px) + var(--tooltip-width, 0px) / 2 - 50px);
38285
+ }
38286
+ `;
37848
38287
  const DisabledTrashIconWrapper = styled.div`
37849
38288
  display: inline-flex;
37850
38289
  align-items: center;
@@ -37869,6 +38308,285 @@ const DisabledTrashIconWrapper = styled.div`
37869
38308
  }
37870
38309
  `;
37871
38310
 
38311
+ // CommentModal.styles.js
38312
+ const ModalOverlay$1 = styled.div`
38313
+ position: fixed;
38314
+ top: 0;
38315
+ left: 0;
38316
+ right: 0;
38317
+ bottom: 0;
38318
+ background-color: rgba(0, 0, 0, 0.5);
38319
+ display: flex;
38320
+ align-items: center;
38321
+ justify-content: center;
38322
+ z-index: 1000;
38323
+ `;
38324
+ const ModalContent = styled.div`
38325
+ background: white;
38326
+ border-radius: 12px;
38327
+ width: 90%;
38328
+ max-width: 500px;
38329
+ max-height: 400px;
38330
+ display: flex;
38331
+ flex-direction: column;
38332
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
38333
+ animation: slideUp 0.3s ease-out;
38334
+
38335
+ @keyframes slideUp {
38336
+ from {
38337
+ opacity: 0;
38338
+ transform: translateY(20px) scale(0.95);
38339
+ }
38340
+ to {
38341
+ opacity: 1;
38342
+ transform: translateY(0) scale(1);
38343
+ }
38344
+ }
38345
+ `;
38346
+ const ModalHeader = styled.div`
38347
+ display: flex;
38348
+ justify-content: space-between;
38349
+ align-items: center;
38350
+ padding: 12px 24px;
38351
+ border-bottom: 1px solid #D9D9D9;
38352
+ flex-shrink: 0;
38353
+ `;
38354
+ const ModalTitle$1 = styled.h5`
38355
+ font-family: "Poppins", sans-serif;
38356
+ font-size: 18px;
38357
+ font-weight: 600;
38358
+ color: #212121;
38359
+ margin: 0;
38360
+ `;
38361
+ const CloseButton$1 = styled.button`
38362
+ background: none;
38363
+ border: none;
38364
+ padding: 8px;
38365
+ cursor: pointer;
38366
+ color: #6b7280;
38367
+ border-radius: 6px;
38368
+ transition: all 0.2s ease;
38369
+ display: flex;
38370
+ align-items: center;
38371
+ justify-content: center;
38372
+
38373
+ &:hover {
38374
+ background-color: #f3f4f6;
38375
+ color: #374151;
38376
+ }
38377
+
38378
+ &:active {
38379
+ transform: scale(0.95);
38380
+ }
38381
+ `;
38382
+ const ModalBody = styled.div`
38383
+ padding: 20px 24px 24px;
38384
+ flex: 1;
38385
+ display: flex;
38386
+ flex-direction: column;
38387
+ overflow: hidden;
38388
+ `;
38389
+ const TextareaWrapper = styled.div`
38390
+ position: relative;
38391
+ display: flex;
38392
+ flex-direction: column;
38393
+ flex: 1;
38394
+ `;
38395
+ const TextareaLabel = styled.label`
38396
+ position: absolute;
38397
+ font-size: 14px;
38398
+ font-weight: 400;
38399
+ top: -10px;
38400
+ left: 25px;
38401
+ padding: 0 4px;
38402
+ background-color: white;
38403
+ color: ${props => props.color};
38404
+ transition: all 0.2s ease;
38405
+ animation: slideInLabel 0.2s ease-out;
38406
+
38407
+ @keyframes slideInLabel {
38408
+ from {
38409
+ opacity: 0;
38410
+ transform: translateY(-4px);
38411
+ }
38412
+ to {
38413
+ opacity: 1;
38414
+ transform: translateY(0);
38415
+ }
38416
+ }
38417
+ `;
38418
+ const CommentTextarea = styled.textarea`
38419
+ width: 100%;
38420
+ min-height: 120px;
38421
+ max-height: 200px;
38422
+ padding: 12px 16px;
38423
+ outline: none;
38424
+ border: 1px solid ${props => props.$hasValue ? props.color : '#8B8989'};
38425
+ border-radius: 12px;
38426
+ font-weight: 400;
38427
+ font-size: 14px;
38428
+ line-height: 1.5;
38429
+ resize: vertical;
38430
+ box-sizing: border-box;
38431
+ transition: all 0.2s ease;
38432
+ overflow-y: auto;
38433
+ font-family: "Poppins", sans-serif;
38434
+ resize: none;
38435
+
38436
+ &:focus {
38437
+ border: 1px solid ${props => props.color};
38438
+ }
38439
+
38440
+ &::placeholder {
38441
+ color: #9ca3af;
38442
+ }
38443
+
38444
+ /* Custom scrollbar */
38445
+ &::-webkit-scrollbar {
38446
+ width: 6px;
38447
+ }
38448
+
38449
+ &::-webkit-scrollbar-track {
38450
+ background: #f1f5f9;
38451
+ border-radius: 3px;
38452
+ }
38453
+
38454
+ &::-webkit-scrollbar-thumb {
38455
+ background: #cbd5e1;
38456
+ border-radius: 3px;
38457
+ }
38458
+
38459
+ &::-webkit-scrollbar-thumb:hover {
38460
+ background: #94a3b8;
38461
+ }
38462
+ `;
38463
+ const CharacterCount = styled.div`
38464
+ margin-top: 8px;
38465
+ font-family: "Poppins", sans-serif;
38466
+ font-size: 12px;
38467
+ font-weight: 400;
38468
+ color: #6b7280;
38469
+ text-align: right;
38470
+ transition: color 0.2s ease;
38471
+ `;
38472
+ const ModalBottom = styled.div`
38473
+ padding: 16px 24px;
38474
+ border-top: 1px solid #D9D9D9;
38475
+ display: flex;
38476
+ gap: 16px;
38477
+ justify-content: flex-end;
38478
+ align-items: center;
38479
+ `;
38480
+
38481
+ const CommentModal = props => {
38482
+ const {
38483
+ isOpen,
38484
+ onClose,
38485
+ onSave,
38486
+ maxLength = 150,
38487
+ color = "#066768",
38488
+ saveButtonHoverColor = "#388586",
38489
+ initialValue = ''
38490
+ } = props;
38491
+ const [commentText, setCommentText] = useState('');
38492
+ const [isFocused, setIsFocused] = useState(false);
38493
+ const [hasUserInteracted, setHasUserInteracted] = useState(false); // Track if user has started typing
38494
+ const [hasInitialValue, setHasInitialValue] = useState(false); // Track if there was initial text
38495
+
38496
+ // Update comment text when modal opens with initial value
38497
+ useEffect(() => {
38498
+ if (isOpen) {
38499
+ const initialText = initialValue || '';
38500
+ setCommentText(initialText);
38501
+ setHasInitialValue(Boolean(initialText.trim())); // Check if there's actual content
38502
+ setHasUserInteracted(false); // Reset interaction state
38503
+ }
38504
+ }, [isOpen, initialValue]);
38505
+ if (!isOpen) return null;
38506
+ const handleTextChange = e => {
38507
+ const text = e.target.value;
38508
+ if (text.length <= maxLength) {
38509
+ setCommentText(text);
38510
+ if (!hasUserInteracted) {
38511
+ setHasUserInteracted(true); // Mark that user has started interacting
38512
+ }
38513
+ }
38514
+ };
38515
+ const handleOverlayClick = e => {
38516
+ if (e.target === e.currentTarget) {
38517
+ onClose();
38518
+ }
38519
+ };
38520
+ const handleSave = () => {
38521
+ if (onSave) {
38522
+ onSave(commentText);
38523
+ }
38524
+ // Don't clear the text here - let the parent handle closing
38525
+ };
38526
+ const handleClose = () => {
38527
+ setCommentText('');
38528
+ setHasUserInteracted(false);
38529
+ setHasInitialValue(false);
38530
+ onClose();
38531
+ };
38532
+ const handleFocus = () => {
38533
+ setIsFocused(true);
38534
+ };
38535
+ const handleBlur = () => {
38536
+ setIsFocused(false);
38537
+ };
38538
+
38539
+ // Determine if save button should be enabled
38540
+ const isSaveEnabled = hasUserInteracted && (commentText.length > 0 || hasInitialValue);
38541
+ return /*#__PURE__*/React$1.createElement(ModalOverlay$1, {
38542
+ onClick: handleOverlayClick
38543
+ }, /*#__PURE__*/React$1.createElement(ModalContent, null, /*#__PURE__*/React$1.createElement(ModalHeader, null, /*#__PURE__*/React$1.createElement(ModalTitle$1, null, "Add Comment"), /*#__PURE__*/React$1.createElement(CloseButton$1, {
38544
+ onClick: handleClose
38545
+ }, /*#__PURE__*/React$1.createElement("svg", {
38546
+ width: "24",
38547
+ height: "24",
38548
+ viewBox: "0 0 24 24",
38549
+ fill: "none"
38550
+ }, /*#__PURE__*/React$1.createElement("path", {
38551
+ d: "M18 6L6 18M6 6l12 12",
38552
+ stroke: "currentColor",
38553
+ strokeWidth: "2",
38554
+ strokeLinecap: "round",
38555
+ strokeLinejoin: "round"
38556
+ })))), /*#__PURE__*/React$1.createElement(ModalBody, null, /*#__PURE__*/React$1.createElement(TextareaWrapper, null, (commentText.length > 0 || isFocused) && /*#__PURE__*/React$1.createElement(TextareaLabel, {
38557
+ color: color
38558
+ }, "Comment"), /*#__PURE__*/React$1.createElement(CommentTextarea, {
38559
+ value: commentText,
38560
+ onChange: handleTextChange,
38561
+ placeholder: "Type a Comment...",
38562
+ maxLength: maxLength,
38563
+ color: color,
38564
+ $hasValue: commentText.length > 0,
38565
+ onBlur: handleBlur,
38566
+ onFocus: handleFocus
38567
+ }), /*#__PURE__*/React$1.createElement(CharacterCount, null, commentText.length, "/", maxLength))), /*#__PURE__*/React$1.createElement(ModalBottom, null, /*#__PURE__*/React$1.createElement(Button$1, {
38568
+ text: "Cancel",
38569
+ type: "secondary",
38570
+ size: "medium",
38571
+ borderColor: "#D3D3D3",
38572
+ hoverTextColor: "#212121",
38573
+ hoverBackgroundColor: "#E6F0F0",
38574
+ hoverBorderColor: "#D3D3D3",
38575
+ onClick: handleClose
38576
+ }), /*#__PURE__*/React$1.createElement(Button$1, {
38577
+ text: "Save",
38578
+ size: "medium",
38579
+ disabled: !isSaveEnabled,
38580
+ hoverTextColor: "#ffffff",
38581
+ disabledTextColor: "#ffffff",
38582
+ borderColor: color,
38583
+ backgroundColor: color,
38584
+ hoverBorderColor: saveButtonHoverColor,
38585
+ hoverBackgroundColor: saveButtonHoverColor,
38586
+ onClick: handleSave
38587
+ }))));
38588
+ };
38589
+
37872
38590
  // OkIcon.jsx
37873
38591
  const OkIcon = _ref => {
37874
38592
  let {
@@ -37887,6 +38605,30 @@ const OkIcon = _ref => {
37887
38605
  }));
37888
38606
  };
37889
38607
 
38608
+ const CommentIcon = ({
38609
+ width = '15',
38610
+ height = '15',
38611
+ showCircle = false,
38612
+ circleColor = '#066768'
38613
+ }) => /*#__PURE__*/React$1.createElement("svg", {
38614
+ xmlns: "http://www.w3.org/2000/svg",
38615
+ width: width,
38616
+ height: height,
38617
+ viewBox: "0 0 15 15",
38618
+ fill: "none"
38619
+ }, showCircle ? /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement("path", {
38620
+ 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",
38621
+ fill: "#212121"
38622
+ }), /*#__PURE__*/React$1.createElement("circle", {
38623
+ cx: "12",
38624
+ cy: "3",
38625
+ r: "3",
38626
+ fill: circleColor
38627
+ })) : /*#__PURE__*/React$1.createElement("path", {
38628
+ 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",
38629
+ fill: "#212121"
38630
+ }));
38631
+
37890
38632
  // TrashIcon.jsx
37891
38633
  const TrashIcon = ({
37892
38634
  width = "14",
@@ -37927,27 +38669,31 @@ const DisabledTrashIcon = ({
37927
38669
  };
37928
38670
 
37929
38671
  // TableBody.jsx
37930
- const TableBody = /*#__PURE__*/forwardRef(({
38672
+ const TableBody = ({
37931
38673
  columns,
37932
38674
  data,
37933
38675
  onRowClick,
37934
38676
  onSendClick,
37935
38677
  buttonColor,
37936
38678
  onDeleteClick,
38679
+ selectedColor,
37937
38680
  resetFocus = false,
37938
38681
  onFocusChange,
37939
- indexToShimmer = 0
37940
- }, ref) => {
38682
+ indexToShimmer = 0,
38683
+ onCommentSave = () => {},
38684
+ ref = null
38685
+ }) => {
37941
38686
  const [hoveredRowIndex, setHoveredRowIndex] = useState(null);
37942
38687
  const [focusedRowIndex, setFocusedRowIndex] = useState(null);
38688
+ const [isCommentModalOpen, setIsCommentModalOpen] = useState(false);
38689
+ const [currentCommentRow, setCurrentCommentRow] = useState(null); // Track which row is being edited
37943
38690
 
37944
- // Expose methods to parent components via ref
37945
- useImperativeHandle(ref, () => ({
37946
- clearFocus: () => setFocusedRowIndex(null),
37947
- getFocusedRowIndex: () => focusedRowIndex
37948
- }));
38691
+ // Expose methods to parent components via ref (if ref is provided)
38692
+ // useImperativeHandle(ref, () => ({
38693
+ // clearFocus: () => setFocusedRowIndex(null),
38694
+ // getFocusedRowIndex: () => focusedRowIndex
38695
+ // }), [focusedRowIndex]);
37949
38696
 
37950
- // Handle resetFocus prop
37951
38697
  useEffect(() => {
37952
38698
  if (resetFocus) {
37953
38699
  setFocusedRowIndex(null);
@@ -37955,11 +38701,11 @@ const TableBody = /*#__PURE__*/forwardRef(({
37955
38701
  }, [resetFocus]);
37956
38702
 
37957
38703
  // Notify parent of focus changes
37958
- useEffect(() => {
37959
- if (onFocusChange) {
37960
- onFocusChange(focusedRowIndex);
37961
- }
37962
- }, [focusedRowIndex, onFocusChange]);
38704
+ // useEffect(() => {
38705
+ // if (onFocusChange) {
38706
+ // onFocusChange(focusedRowIndex);
38707
+ // }
38708
+ // }, [focusedRowIndex, onFocusChange]);
37963
38709
 
37964
38710
  // Handle row click for focus state
37965
38711
  const handleRowClick = (row, rowIndex) => {
@@ -37969,6 +38715,21 @@ const TableBody = /*#__PURE__*/forwardRef(({
37969
38715
  }
37970
38716
  };
37971
38717
 
38718
+ // Handle comment save
38719
+ const handleCommentSave = commentText => {
38720
+ if (currentCommentRow !== null) {
38721
+ onCommentSave(currentCommentRow, commentText);
38722
+ }
38723
+ setCurrentCommentRow(null);
38724
+ setIsCommentModalOpen(false);
38725
+ };
38726
+
38727
+ // Handle comment modal close
38728
+ const handleCommentModalClose = () => {
38729
+ setCurrentCommentRow(null);
38730
+ setIsCommentModalOpen(false);
38731
+ };
38732
+
37972
38733
  // Function to calculate tooltip height based on text length
37973
38734
  const calculateTooltipOffset = (text, isRegularCell = false) => {
37974
38735
  if (!text) return {
@@ -38104,6 +38865,49 @@ const TableBody = /*#__PURE__*/forwardRef(({
38104
38865
  }), /*#__PURE__*/React$1.createElement("span", null, "All Sent"));
38105
38866
  }
38106
38867
  return value;
38868
+ case 'comments':
38869
+ const commentText = value || '';
38870
+ const hasComments = commentText.trim().length > 0;
38871
+
38872
+ // Truncate tooltip text if longer than 150 characters
38873
+ const commentTooltipText = commentText.length > 150 ? commentText.substring(0, 147) + '...' : commentText;
38874
+ return /*#__PURE__*/React$1.createElement(CommentIconWrapper, {
38875
+ $buttonColor: buttonColor,
38876
+ ref: el => {
38877
+ if (el) {
38878
+ if (hasComments) {
38879
+ // Add tooltip if there are comments
38880
+ const rect = el.getBoundingClientRect();
38881
+ const {
38882
+ offset,
38883
+ height
38884
+ } = calculateTooltipOffset(commentTooltipText);
38885
+ el.style.setProperty('--tooltip-top', `${rect.top}px`);
38886
+ el.style.setProperty('--tooltip-left', `${rect.left}px`);
38887
+ el.style.setProperty('--tooltip-width', `${rect.width}px`);
38888
+ el.style.setProperty('--tooltip-offset', `${offset}px`);
38889
+ el.style.setProperty('--tooltip-height', `${height}px`);
38890
+ el.setAttribute('data-tooltip', commentTooltipText);
38891
+ } else {
38892
+ // Remove tooltip if there are no comments
38893
+ el.removeAttribute('data-tooltip');
38894
+ el.style.removeProperty('--tooltip-top');
38895
+ el.style.removeProperty('--tooltip-left');
38896
+ el.style.removeProperty('--tooltip-width');
38897
+ el.style.removeProperty('--tooltip-offset');
38898
+ el.style.removeProperty('--tooltip-height');
38899
+ }
38900
+ }
38901
+ },
38902
+ onClick: e => {
38903
+ e.stopPropagation();
38904
+ setCurrentCommentRow(rowIndex);
38905
+ setIsCommentModalOpen(true);
38906
+ }
38907
+ }, /*#__PURE__*/React$1.createElement(CommentIcon, {
38908
+ showCircle: hasComments,
38909
+ circleColor: "#066768"
38910
+ }));
38107
38911
  case 'trash':
38108
38912
  // Only show trash icon when row is hovered
38109
38913
  if (hoveredRowIndex !== rowIndex) {
@@ -38167,11 +38971,12 @@ const TableBody = /*#__PURE__*/forwardRef(({
38167
38971
  const shouldShowTooltip = (element, content) => {
38168
38972
  return element && element.scrollWidth > element.clientWidth;
38169
38973
  };
38170
- return /*#__PURE__*/React$1.createElement(StyledTableBody, null, data.map((row, rowIndex) => /*#__PURE__*/React$1.createElement(TableRow, {
38974
+ return /*#__PURE__*/React$1.createElement(React$1.Fragment, null, /*#__PURE__*/React$1.createElement(StyledTableBody, null, data.map((row, rowIndex) => /*#__PURE__*/React$1.createElement(TableRow, {
38171
38975
  key: rowIndex,
38172
38976
  "data-row-index": rowIndex,
38173
38977
  className: indexToShimmer === rowIndex ? 'shimmer-row' : '',
38174
- $isFocused: focusedRowIndex === rowIndex,
38978
+ isFocused: focusedRowIndex === rowIndex,
38979
+ selectedColor: selectedColor,
38175
38980
  onMouseEnter: () => setHoveredRowIndex(rowIndex),
38176
38981
  onMouseLeave: () => setHoveredRowIndex(null),
38177
38982
  onClick: () => handleRowClick(row, rowIndex)
@@ -38200,8 +39005,13 @@ const TableBody = /*#__PURE__*/forwardRef(({
38200
39005
  $minWidth: column.minWidth,
38201
39006
  $maxWidth: column.maxWidth
38202
39007
  }, formattedValue);
38203
- }))));
38204
- });
39008
+ })))), /*#__PURE__*/React$1.createElement(CommentModal, {
39009
+ isOpen: isCommentModalOpen,
39010
+ onClose: handleCommentModalClose,
39011
+ onSave: handleCommentSave,
39012
+ initialValue: currentCommentRow !== null ? data[currentCommentRow]?.Comments || '' : ''
39013
+ }));
39014
+ };
38205
39015
  TableBody.propTypes = {
38206
39016
  columns: PropTypes.array.isRequired,
38207
39017
  data: PropTypes.array.isRequired,
@@ -38211,7 +39021,9 @@ TableBody.propTypes = {
38211
39021
  onDeleteClick: PropTypes.func,
38212
39022
  resetFocus: PropTypes.bool,
38213
39023
  onFocusChange: PropTypes.func,
38214
- indexToShimmer: PropTypes.number
39024
+ indexToShimmer: PropTypes.number,
39025
+ onCommentSave: PropTypes.func,
39026
+ ref: PropTypes.object
38215
39027
  };
38216
39028
  TableBody.displayName = 'TableBody';
38217
39029
 
@@ -41382,7 +42194,7 @@ var Lottie = function Lottie(props) {
41382
42194
  };
41383
42195
 
41384
42196
  // Table.jsx
41385
- const Table = /*#__PURE__*/forwardRef((props, ref) => {
42197
+ const Table = props => {
41386
42198
  const {
41387
42199
  width = '100%',
41388
42200
  height = 'auto',
@@ -41393,7 +42205,6 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41393
42205
  onButtonClick = () => {},
41394
42206
  buttonColor = '#066768',
41395
42207
  buttonHoverColor = '#388586',
41396
- // Updated props for new table structure
41397
42208
  columns = [],
41398
42209
  onRowClick = () => {},
41399
42210
  onSort,
@@ -41403,6 +42214,7 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41403
42214
  onSideButtonClick = () => {},
41404
42215
  sideButtonColor = '#066768',
41405
42216
  sideButtonHoverColor = '#388586',
42217
+ selectedColor = '#B4D1D2',
41406
42218
  children = null,
41407
42219
  tableBodyHeight = '728px',
41408
42220
  isLoading = false,
@@ -41422,7 +42234,10 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41422
42234
  clearFocusOnOutsideClick = true,
41423
42235
  // NEW: Props for edit mode focus management
41424
42236
  isEditMode = false,
41425
- editRowIndex = -1
42237
+ editRowIndex = -1,
42238
+ onCommentSave = () => {},
42239
+ // Accept ref as a regular prop
42240
+ ref = null
41426
42241
  } = props;
41427
42242
  const scrollWrapperRef = useRef(null);
41428
42243
  const tableBodyRef = useRef(null);
@@ -41441,11 +42256,16 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41441
42256
  onTableFocusChange(focusedRowIndex);
41442
42257
  };
41443
42258
 
41444
- // Expose methods to parent components via ref
42259
+ // Handle comment save - pass through to parent
42260
+ const handleCommentSave = (rowIndex, commentText) => {
42261
+ onCommentSave(rowIndex, commentText);
42262
+ };
42263
+
42264
+ // Expose methods to parent components via ref (if ref is provided)
41445
42265
  useImperativeHandle(ref, () => ({
41446
42266
  clearTableFocus,
41447
42267
  getTableBodyRef: () => tableBodyRef.current
41448
- }));
42268
+ }), []);
41449
42269
  useEffect(() => {
41450
42270
  const scrollWrapper = scrollWrapperRef.current;
41451
42271
  if (!scrollWrapper || !onLastRowsReached) return;
@@ -41523,9 +42343,11 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41523
42343
  columns: columns,
41524
42344
  indexToShimmer: indexToShimmer,
41525
42345
  data: data,
42346
+ selectedColor: selectedColor,
41526
42347
  onRowClick: onRowClick,
41527
42348
  onSendClick: onSendClick,
41528
42349
  onDeleteClick: onDeleteClick,
42350
+ onCommentSave: handleCommentSave,
41529
42351
  buttonColor: buttonColor,
41530
42352
  resetFocus: resetTableFocus,
41531
42353
  onFocusChange: handleTableFocusChange
@@ -41547,7 +42369,7 @@ const Table = /*#__PURE__*/forwardRef((props, ref) => {
41547
42369
  animationData: LoadingAnimation,
41548
42370
  loop: true
41549
42371
  }), /*#__PURE__*/React$1.createElement(LoadingText, null, isLoadingText)))));
41550
- });
42372
+ };
41551
42373
 
41552
42374
  // Add displayName for better debugging
41553
42375
  Table.displayName = 'Table';
@@ -52506,5 +53328,5 @@ const QuickFilterCards = _ref => {
52506
53328
  }));
52507
53329
  };
52508
53330
 
52509
- export { AreaChart, BannerEventBoxList, BarChart, BarChartTwoRows, BarChartWithAreaChart, BarChartsByWeeks, BatteryChart, BreakdownPanel, BrushChart, BubbleChart, Build, Button$1 as Button, CollapseData, CollapseHeader, ContainerTable, DialogOverlay$1 as DialogOverlay, DoubleBarSingleLine, DoublePanelDataRow, DownloadProgress, DropdownNew, EventDetailsCard, EventList, Execute, FilterPanel, FilterPop, Heatmap, IconButton$1 as IconButton, Input$2 as Input, InsightsCarousel, ItemManagerPanel, LinkButton, LinnerDataBox, MarketShareDescription, MenuRoute, MessageBox, ModalDrawer, ModalWithOverlay, OneColumnContainer, OverlayDropdown, PerformanceAnalyticsLegend, PieChart, PopupCharts, QuickFilter, QuickFilterCards, RangePicker, RangePop, ReportTable, SearchInput, SingleBarLineCharts, SortPop, TabMenu, Table, ToasterMessageBox, ToggleSwitch, Tooltip$2 as Tooltip, TopToggleList, TotalDoughnutChart, TotalHorizontalCharts, Track, TwoBarCharts, WeeksPicker };
53331
+ export { AdvancedThresholds, Analytics, AreaChart, BannerEventBoxList, BarChart, BarChartTwoRows, BarChartWithAreaChart, BarChartsByWeeks, BatteryChart, BreakdownPanel, BrushChart, BubbleChart, Budgets, Build, Button$1 as Button, Campaigns, CollapseData, CollapseHeader, ContainerTable, Coupons, CustomerSegments, Dashboard, DialogOverlay$1 as DialogOverlay, DoubleBarSingleLine, DoublePanelDataRow, DownloadProgress, DropdownNew, EventDetailsCard, EventList, Execute, FilterPanel, FilterPop, GroupBuilder, Heatmap, IconButton$1 as IconButton, Input$2 as Input, InsightsCarousel, ItemManagerPanel, ItemsStores, LinkButton, LinnerDataBox, MarketShareDescription, MenuRoute, MessageBox, ModalDrawer, ModalWithOverlay, OneColumnContainer, OverlayDropdown, PerformanceAnalyticsLegend, PieChart, PopupCharts, PreTestWhatIf, QuickFilter, QuickFilterCards, RangePicker, RangePop, ReportTable, RulesEngine, SampleRunEngine, SearchInput, SingleBarLineCharts, SortPop, TabMenu, Table, ToasterMessageBox, ToggleSwitch, Tooltip$2 as Tooltip, TopToggleList, TotalDoughnutChart, TotalHorizontalCharts, Track, TwoBarCharts, WeeksPicker };
52510
53332
  //# sourceMappingURL=index.esm.js.map