@itilite/lumina-ui 1.1.13 → 1.2.0

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 (115) hide show
  1. package/dist/AdvancedDateRangePicker-D7xn4So6.d.mts +59 -0
  2. package/dist/AdvancedDateRangePicker-D7xn4So6.d.ts +59 -0
  3. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.mts +64 -0
  4. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.ts +64 -0
  5. package/dist/AdvancedDateRangePicker-DGg-rucL.d.mts +62 -0
  6. package/dist/AdvancedDateRangePicker-DGg-rucL.d.ts +62 -0
  7. package/dist/AdvancedDateRangePicker-DOSprRQR.d.mts +52 -0
  8. package/dist/AdvancedDateRangePicker-DOSprRQR.d.ts +52 -0
  9. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.mts +64 -0
  10. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.ts +64 -0
  11. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.mts +60 -0
  12. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.ts +60 -0
  13. package/dist/AdvancedDateRangePicker-ozItnkhp.d.mts +57 -0
  14. package/dist/AdvancedDateRangePicker-ozItnkhp.d.ts +57 -0
  15. package/dist/Table-BOq-_9Nr.d.mts +121 -0
  16. package/dist/Table-BOq-_9Nr.d.ts +121 -0
  17. package/dist/Table-BxaCiQmh.d.mts +82 -0
  18. package/dist/Table-BxaCiQmh.d.ts +82 -0
  19. package/dist/Table-DNvoh2P8.d.mts +127 -0
  20. package/dist/Table-DNvoh2P8.d.ts +127 -0
  21. package/dist/Table-DSFYzrpU.d.mts +129 -0
  22. package/dist/Table-DSFYzrpU.d.ts +129 -0
  23. package/dist/Table-DoCPt3ri.d.mts +129 -0
  24. package/dist/Table-DoCPt3ri.d.ts +129 -0
  25. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.mts +2 -0
  26. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.ts +2 -0
  27. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.js +1648 -0
  28. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +15 -0
  29. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.mts +17 -0
  30. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.ts +17 -0
  31. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.js +370 -0
  32. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.mjs +8 -0
  33. package/dist/atom/LoadingSpinner/LoadingSpinner.d.mts +2 -2
  34. package/dist/atom/LoadingSpinner/LoadingSpinner.d.ts +2 -2
  35. package/dist/atom/RangePicker/RangePicker.js +105 -102
  36. package/dist/atom/RangePicker/RangePicker.mjs +3 -3
  37. package/dist/atom/Select/Select.d.mts +1 -4
  38. package/dist/atom/Select/Select.d.ts +1 -4
  39. package/dist/atom/Select/Select.js +105 -102
  40. package/dist/atom/Select/Select.mjs +1 -1
  41. package/dist/atom/Table/Table.d.mts +3 -0
  42. package/dist/atom/Table/Table.d.ts +3 -0
  43. package/dist/atom/Table/Table.js +340 -0
  44. package/dist/atom/Table/Table.mjs +9 -0
  45. package/dist/chunk-27LRL4RO.mjs +428 -0
  46. package/dist/chunk-2IT3XM7C.mjs +473 -0
  47. package/dist/chunk-3HXZIFV6.mjs +438 -0
  48. package/dist/{chunk-Y3BIY4DW.mjs → chunk-4JX54OKI.mjs} +27 -18
  49. package/dist/chunk-53O7JM5I.mjs +424 -0
  50. package/dist/chunk-5JXIJTAS.mjs +448 -0
  51. package/dist/chunk-5PQ43JFX.mjs +440 -0
  52. package/dist/chunk-62VAYFZA.mjs +437 -0
  53. package/dist/chunk-6ON32H2N.mjs +431 -0
  54. package/dist/chunk-6RIZXTFP.mjs +290 -0
  55. package/dist/chunk-6XIT27XY.mjs +269 -0
  56. package/dist/chunk-772C454L.mjs +438 -0
  57. package/dist/chunk-7L267Y4P.mjs +429 -0
  58. package/dist/chunk-7WSVCE2C.mjs +269 -0
  59. package/dist/chunk-ANJI6SPV.mjs +283 -0
  60. package/dist/chunk-BFFLWW7N.mjs +250 -0
  61. package/dist/chunk-C5VYFNVC.mjs +441 -0
  62. package/dist/chunk-DL7BZMGE.mjs +295 -0
  63. package/dist/chunk-DXPVJNGY.mjs +284 -0
  64. package/dist/chunk-FPH63V2R.mjs +269 -0
  65. package/dist/chunk-FTL3PFC2.mjs +438 -0
  66. package/dist/chunk-G4P6XGQX.mjs +278 -0
  67. package/dist/chunk-GGWY2SYX.mjs +452 -0
  68. package/dist/{chunk-E4FCLHYA.mjs → chunk-GU5F7Z7I.mjs} +107 -104
  69. package/dist/chunk-GZ4P7OL3.mjs +429 -0
  70. package/dist/chunk-I6GLPWHS.mjs +278 -0
  71. package/dist/chunk-IPVJEGDI.mjs +476 -0
  72. package/dist/chunk-J4YYP4IZ.mjs +0 -0
  73. package/dist/chunk-J5JDQ4R6.mjs +278 -0
  74. package/dist/chunk-K2A4TWA3.mjs +430 -0
  75. package/dist/chunk-L3L42SIL.mjs +429 -0
  76. package/dist/chunk-LRNKIRH3.mjs +289 -0
  77. package/dist/chunk-MA23J4WQ.mjs +430 -0
  78. package/dist/chunk-N4DPPZVJ.mjs +269 -0
  79. package/dist/chunk-PQ3B2FEB.mjs +249 -0
  80. package/dist/{chunk-35KDS27M.mjs → chunk-PSBEYGD4.mjs} +1 -1
  81. package/dist/chunk-QRGHJP7U.mjs +437 -0
  82. package/dist/chunk-QU73KNTT.mjs +452 -0
  83. package/dist/chunk-RC6IGURJ.mjs +428 -0
  84. package/dist/chunk-SKPCOHON.mjs +473 -0
  85. package/dist/chunk-SRKN7WS7.mjs +448 -0
  86. package/dist/chunk-TQDZWJZP.mjs +269 -0
  87. package/dist/chunk-UAGSPM3T.mjs +288 -0
  88. package/dist/chunk-UC4NTBDH.mjs +439 -0
  89. package/dist/chunk-UPSQTJJ4.mjs +294 -0
  90. package/dist/chunk-V3CHJHUX.mjs +424 -0
  91. package/dist/chunk-X3NDICAU.mjs +284 -0
  92. package/dist/chunk-XECXKSTC.mjs +453 -0
  93. package/dist/chunk-XIVTXS3Y.mjs +439 -0
  94. package/dist/chunk-ZGV6QMVM.mjs +437 -0
  95. package/dist/index.d.mts +16 -13
  96. package/dist/index.d.ts +16 -13
  97. package/dist/index.js +1121 -117
  98. package/dist/index.mjs +22 -13
  99. package/dist/styles.css +1221 -130
  100. package/package.json +1 -1
  101. package/dist/Avatar-DX2JwvAs.d.mts +0 -17
  102. package/dist/Avatar-DX2JwvAs.d.ts +0 -17
  103. package/dist/Tag-l7I5oeyk.d.mts +0 -13
  104. package/dist/Tag-l7I5oeyk.d.ts +0 -13
  105. package/dist/chunk-3S4X3YO2.mjs +0 -64
  106. package/dist/chunk-DLLT6V65.mjs +0 -141
  107. package/dist/chunk-HISCHZ5H.mjs +0 -77
  108. package/dist/chunk-I5VHKSQR.mjs +0 -64
  109. package/dist/chunk-N355RJGH.mjs +0 -141
  110. package/dist/chunk-N3YFQDW7.mjs +0 -77
  111. package/dist/chunk-QWK3MYDM.mjs +0 -64
  112. package/dist/chunk-SWRFCTJW.mjs +0 -77
  113. package/dist/chunk-UUEPD2FH.mjs +0 -141
  114. package/dist/chunk-X76GNSBB.mjs +0 -87
  115. package/dist/chunk-ZGFE3OPJ.mjs +0 -678
package/dist/index.js CHANGED
@@ -59,6 +59,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
59
59
  // src/index.ts
60
60
  var index_exports = {};
61
61
  __export(index_exports, {
62
+ AdvancedDateRangePicker: () => AdvancedDateRangePicker_default,
62
63
  Avatar: () => Avatar_default,
63
64
  Button: () => Button_default,
64
65
  Checkbox: () => Checkbox_default,
@@ -69,6 +70,7 @@ __export(index_exports, {
69
70
  Select: () => Select_default,
70
71
  Slider: () => Slider_default,
71
72
  Switch: () => Switch_default,
73
+ Table: () => Table_default,
72
74
  Tag: () => Tag_default,
73
75
  Tooltip: () => Tooltip_default,
74
76
  UserProfile: () => UserProfile_default
@@ -762,6 +764,46 @@ var LoadingSpinner_default = LoadingSpinner;
762
764
 
763
765
  // src/atom/Select/Select.tsx
764
766
  var import_jsx_runtime14 = require("react/jsx-runtime");
767
+ var InputWrapper = (0, import_react2.memo)(({ children, disabled, disabledTooltip }) => {
768
+ if (disabled && disabledTooltip)
769
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tooltip_default, { title: disabledTooltip, children });
770
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children });
771
+ });
772
+ var OptionItem = (0, import_react2.memo)(({
773
+ option,
774
+ index,
775
+ isSelected,
776
+ isHighlighted,
777
+ experience,
778
+ size,
779
+ optionClassName,
780
+ onSelectHandler,
781
+ onMouseEnterHandler
782
+ }) => {
783
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
784
+ "div",
785
+ {
786
+ onClick: () => onSelectHandler(option),
787
+ onMouseEnter: () => onMouseEnterHandler(index),
788
+ className: (0, import_clsx8.default)(
789
+ "tw-transition-all tw-duration-150",
790
+ { "tw-typography-body2": size !== "small" },
791
+ { "tw-typography-caption1": size === "small" },
792
+ optionClassName
793
+ ),
794
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
795
+ "div",
796
+ {
797
+ className: (0, import_clsx8.default)(
798
+ "tw-px-4 tw-cursor-pointer tw-py-2 tw-mx-0.5 tw-rounded-xl",
799
+ isSelected ? experience === "personal" ? "tw-bg-[#f1e8fa]" : "tw-bg-[#fff1e1]" : isHighlighted ? "tw-bg-[#f3f4f6] tw-text-gray-900" : "tw-text-gray-900 hover:tw-bg-[#1118270a]"
800
+ ),
801
+ children: option.label
802
+ }
803
+ )
804
+ }
805
+ );
806
+ });
765
807
  var Select = ({
766
808
  label,
767
809
  mandatory = false,
@@ -1000,6 +1042,31 @@ var Select = ({
1000
1042
  }
1001
1043
  return "";
1002
1044
  }, [selectedValue, validatedOptions, showDisplayValue, normalizeValue]);
1045
+ const displayValue = (0, import_react2.useMemo)(() => getDisplayValue(), [getDisplayValue]);
1046
+ const inputClasses = (0, import_react2.useMemo)(() => {
1047
+ return (0, import_clsx8.default)(
1048
+ "tw-w-full tw-rounded-xl tw-outline-none tw-transition-all tw-duration-200 tw-cursor-pointer tw-border-solid tw-text-color-text-default",
1049
+ sizeClasses.input,
1050
+ sizeClasses.padding,
1051
+ variantClasses,
1052
+ {
1053
+ "tw-bg-white": valueSelected || displayValue || isFocused,
1054
+ "tw-bg-color-gray-5": !valueSelected || !displayValue,
1055
+ "!tw-bg-[#F8F7F6] tw-cursor-not-allowed tw-pointer-events-none": disabled
1056
+ },
1057
+ !label && "tw-flex tw-items-center",
1058
+ {
1059
+ "!tw-border-color-primary": isFocused && experience === "business"
1060
+ },
1061
+ {
1062
+ "!tw-border-[#804D7B]": isFocused && experience === "personal"
1063
+ },
1064
+ error ? "!tw-border-color-text-critical " : "tw-border-[#EBE3DD] hover:tw-border-[#C5B7AC]",
1065
+ "focus:tw-shadow-sm focus:tw-ring-offset-1",
1066
+ className,
1067
+ inputClassName
1068
+ );
1069
+ }, [sizeClasses, variantClasses, valueSelected, displayValue, isFocused, disabled, label, experience, error, className, inputClassName]);
1003
1070
  const filteredOptions = (0, import_react2.useMemo)(() => {
1004
1071
  var _a;
1005
1072
  if (!enableSearch) {
@@ -1094,7 +1161,7 @@ var Select = ({
1094
1161
  }, [highlightedIndex]);
1095
1162
  (0, import_react2.useEffect)(() => {
1096
1163
  optionRefs.current = [];
1097
- }, [filteredOptions]);
1164
+ }, [filteredOptions.length]);
1098
1165
  const handleMouseEnter = (0, import_react2.useCallback)(() => {
1099
1166
  if (hoverTimeoutRef.current) {
1100
1167
  clearTimeout(hoverTimeoutRef.current);
@@ -1131,12 +1198,23 @@ var Select = ({
1131
1198
  },
1132
1199
  [isOpen, handleInputInteraction]
1133
1200
  );
1134
- const InputWrapper = ({ children }) => {
1135
- if (disabled && disabledTooltip)
1136
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tooltip_default, { title: disabledTooltip, children });
1137
- return children;
1138
- };
1139
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(InputWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1201
+ const handleChevronMouseDown = (0, import_react2.useCallback)(
1202
+ (e) => {
1203
+ if (isHovering && selectedValue && allowClear) {
1204
+ handleClear(e);
1205
+ } else {
1206
+ handleChevronClick(e);
1207
+ }
1208
+ },
1209
+ [isHovering, selectedValue, allowClear, handleClear, handleChevronClick]
1210
+ );
1211
+ const handleOptionClick = (0, import_react2.useCallback)((option) => {
1212
+ handleOptionSelect(option);
1213
+ }, [handleOptionSelect]);
1214
+ const handleOptionMouseEnter = (0, import_react2.useCallback)((index) => {
1215
+ setHighlightedIndex(index);
1216
+ }, []);
1217
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(InputWrapper, { disabled, disabledTooltip, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1140
1218
  "div",
1141
1219
  {
1142
1220
  style,
@@ -1160,35 +1238,11 @@ var Select = ({
1160
1238
  autoCorrect: "off",
1161
1239
  autoCapitalize: "off",
1162
1240
  spellCheck: "false",
1163
- value: isFocused && enableSearch ? searchTerm : getDisplayValue(),
1241
+ value: isFocused && enableSearch ? searchTerm : displayValue,
1164
1242
  onChange: enableSearch ? handleSearchChange : void 0,
1165
1243
  onClick: handleInputInteraction,
1166
1244
  onKeyDown: handleKeyDown,
1167
- className: (0, import_clsx8.default)(
1168
- "tw-w-full tw-rounded-xl tw-outline-none tw-transition-all tw-duration-200 tw-cursor-pointer tw-border-solid tw-text-color-text-default",
1169
- sizeClasses.input,
1170
- sizeClasses.padding,
1171
- variantClasses,
1172
- {
1173
- "tw-bg-white": valueSelected || getDisplayValue() || isFocused,
1174
- "tw-bg-color-gray-5": !valueSelected || !getDisplayValue(),
1175
- "!tw-bg-[#F8F7F6] tw-cursor-not-allowed tw-pointer-events-none": disabled
1176
- },
1177
- // Conditional padding based on label presence
1178
- !label && "tw-flex tw-items-center",
1179
- {
1180
- "!tw-border-color-primary": isFocused && experience === "business"
1181
- },
1182
- {
1183
- "!tw-border-[#804D7B]": isFocused && experience === "personal"
1184
- },
1185
- error ? "!tw-border-color-text-critical " : "tw-border-[#EBE3DD] hover:tw-border-[#C5B7AC]",
1186
- // Add focus state styling
1187
- "focus:tw-shadow-sm focus:tw-ring-offset-1",
1188
- className,
1189
- inputClassName
1190
- // Put inputClassName last so it can override default classes
1191
- ),
1245
+ className: inputClasses,
1192
1246
  readOnly: !isFocused || !enableSearch
1193
1247
  }
1194
1248
  ),
@@ -1229,13 +1283,7 @@ var Select = ({
1229
1283
  // Only rotate chevron when open and not showing clear icon
1230
1284
  isOpen && !(isHovering && selectedValue && allowClear) && "-tw-rotate-180"
1231
1285
  ),
1232
- onMouseDown: (e) => {
1233
- if (isHovering && selectedValue && allowClear) {
1234
- handleClear(e);
1235
- } else {
1236
- handleChevronClick(e);
1237
- }
1238
- },
1286
+ onMouseDown: handleChevronMouseDown,
1239
1287
  children: disabled ? null : isHovering && selectedValue && allowClear ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1240
1288
  CrossV2,
1241
1289
  {
@@ -1266,75 +1314,32 @@ var Select = ({
1266
1314
  dropdownClassName
1267
1315
  ),
1268
1316
  ref: optionListRef,
1269
- children: filteredOptions.length > 0 ? filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1270
- "div",
1271
- {
1272
- ref: (el) => optionRefs.current[index] = el,
1273
- onClick: () => handleOptionSelect(option),
1274
- onMouseEnter: () => setHighlightedIndex(index),
1275
- className: (0, import_clsx8.default)(
1276
- "tw-transition-all tw-duration-150",
1277
- { "tw-typography-body2": size !== "small" },
1278
- { "tw-typography-caption1": size === "small" },
1279
- optionClassName
1280
- ),
1281
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1282
- "div",
1283
- {
1284
- className: (0, import_clsx8.default)(
1285
- "tw-px-4 tw-cursor-pointer tw-py-2 tw-mx-0.5 tw-rounded-xl",
1286
- normalizeValue(selectedValue) === normalizeValue(option.value) ? experience === "personal" ? "tw-bg-[#f1e8fa]" : "tw-bg-[#fff1e1]" : (
1287
- // Highlighted option styling (keyboard navigation)
1288
- index === highlightedIndex ? "tw-bg-[#f3f4f6] tw-text-gray-900" : (
1289
- // Default option styling
1290
- "tw-text-gray-900 hover:tw-bg-[#1118270a]"
1291
- )
1292
- )
1293
- ),
1294
- children: option.label
1295
- }
1296
- )
1297
- },
1298
- doubleCharSearch ? option.label : option.value
1299
- )) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "tw-px-4 tw-py-3 tw-text-gray-500 tw-text-sm", children: "No options found" })
1317
+ children: filteredOptions.length > 0 ? filteredOptions.map((option, index) => {
1318
+ const isSelected = normalizeValue(selectedValue) === normalizeValue(option.value);
1319
+ const isHighlighted = index === highlightedIndex;
1320
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref: (el) => optionRefs.current[index] = el, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1321
+ OptionItem,
1322
+ {
1323
+ option,
1324
+ index,
1325
+ isSelected,
1326
+ isHighlighted,
1327
+ experience,
1328
+ size,
1329
+ optionClassName,
1330
+ onSelectHandler: handleOptionClick,
1331
+ onMouseEnterHandler: handleOptionMouseEnter
1332
+ }
1333
+ ) }, doubleCharSearch ? option.label : option.value);
1334
+ }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "tw-px-4 tw-py-3 tw-text-gray-500 tw-text-sm", children: "No options found" })
1300
1335
  }
1301
1336
  )
1302
1337
  ]
1303
1338
  }
1304
1339
  ) });
1305
1340
  };
1306
- var arePropsEqual = (prevProps, nextProps) => {
1307
- var _a, _b;
1308
- const criticalProps = [
1309
- "value",
1310
- "valueSelected",
1311
- "options",
1312
- "error",
1313
- "disabled",
1314
- "label",
1315
- "mandatory"
1316
- ];
1317
- for (const prop of criticalProps) {
1318
- if (prevProps[prop] !== nextProps[prop]) {
1319
- return false;
1320
- }
1321
- }
1322
- if (((_a = prevProps.options) == null ? void 0 : _a.length) !== ((_b = nextProps.options) == null ? void 0 : _b.length)) {
1323
- return false;
1324
- }
1325
- if (prevProps.options && nextProps.options) {
1326
- for (let i = 0; i < prevProps.options.length; i++) {
1327
- const prevOpt = prevProps.options[i];
1328
- const nextOpt = nextProps.options[i];
1329
- if ((prevOpt == null ? void 0 : prevOpt.value) !== (nextOpt == null ? void 0 : nextOpt.value) || (prevOpt == null ? void 0 : prevOpt.label) !== (nextOpt == null ? void 0 : nextOpt.label)) {
1330
- return false;
1331
- }
1332
- }
1333
- }
1334
- return true;
1335
- };
1336
1341
  Select.displayName = "Select";
1337
- var Select_default = (0, import_react2.memo)(Select, arePropsEqual);
1342
+ var Select_default = Select;
1338
1343
 
1339
1344
  // src/atom/RangePicker/RangePicker.tsx
1340
1345
  var import_jsx_runtime15 = require("react/jsx-runtime");
@@ -1935,15 +1940,739 @@ function CustomRangePicker(props) {
1935
1940
  CustomRangePicker.displayName = "RangePicker";
1936
1941
  var RangePicker_default = CustomRangePicker;
1937
1942
 
1943
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
1944
+ var import_react5 = require("react");
1945
+ var import_clsx10 = __toESM(require("clsx"));
1946
+ var import_dayjs3 = __toESM(require("dayjs"));
1947
+ var import_customParseFormat = __toESM(require("dayjs/plugin/customParseFormat.js"));
1948
+ var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore.js"));
1949
+
1950
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.module.scss
1951
+ var AdvancedDateRangePicker_module_default = { "root": "AdvancedDateRangePicker-module__root___udir8", "singleCalendar": "AdvancedDateRangePicker-module__singleCalendar___qy2-H", "hidePresets": "AdvancedDateRangePicker-module__hidePresets___-m2-P", "inner": "AdvancedDateRangePicker-module__inner___P4OHa", "left": "AdvancedDateRangePicker-module__left___T6E84", "sidebarItem": "AdvancedDateRangePicker-module__sidebarItem___-NXPm", "sidebarItemActive": "AdvancedDateRangePicker-module__sidebarItemActive___5GmBY", "main": "AdvancedDateRangePicker-module__main___G4MU9", "header": "AdvancedDateRangePicker-module__header___mxXEE", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "timezoneSelectContainer": "AdvancedDateRangePicker-module__timezoneSelectContainer___8SMc4", "timezoneSelectInput": "AdvancedDateRangePicker-module__timezoneSelectInput___ol0-7", "timezoneDisabledBadge": "AdvancedDateRangePicker-module__timezoneDisabledBadge___VBxOd", "inputWrapper": "AdvancedDateRangePicker-module__inputWrapper___bFFNF", "dateTimeColumn": "AdvancedDateRangePicker-module__dateTimeColumn___tdDV3", "dateTimeGroup": "AdvancedDateRangePicker-module__dateTimeGroup___azF09", "dateInput": "AdvancedDateRangePicker-module__dateInput___0t9ww", "inputError": "AdvancedDateRangePicker-module__inputError___A5hid", "timeInput": "AdvancedDateRangePicker-module__timeInput___Jalr9", "errorMessage": "AdvancedDateRangePicker-module__errorMessage___gx7ag", "body": "AdvancedDateRangePicker-module__body___f8XYj", "footer": "AdvancedDateRangePicker-module__footer___rsJ2w", "doneBtn": "AdvancedDateRangePicker-module__doneBtn___mt-Sv" };
1952
+
1953
+ // src/atom/AdvancedDateRangePicker/InternalCalendar.tsx
1954
+ var import_react4 = require("react");
1955
+ var import_dayjs2 = __toESM(require("dayjs"));
1956
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1957
+ var InternalCalendar = ({
1958
+ id = "",
1959
+ onChange = () => {
1960
+ },
1961
+ dateRange = ["", ""],
1962
+ showSingleCalendar: showSingleCalendarProp = false,
1963
+ disablePastDates = false,
1964
+ minDate = null,
1965
+ maxDate = null,
1966
+ minYear = 1900,
1967
+ maxYear = (/* @__PURE__ */ new Date()).getFullYear() + 10,
1968
+ allowSameDates = false
1969
+ }) => {
1970
+ const onChangeRef = (0, import_react4.useRef)(onChange);
1971
+ (0, import_react4.useEffect)(() => {
1972
+ onChangeRef.current = onChange;
1973
+ }, [onChange]);
1974
+ const getInitialDate = () => {
1975
+ const today2 = /* @__PURE__ */ new Date();
1976
+ today2.setHours(0, 0, 0, 0);
1977
+ if (dateRange[0]) return new Date(dateRange[0]);
1978
+ if (today2.getFullYear() >= minYear && today2.getFullYear() <= maxYear) {
1979
+ return today2;
1980
+ }
1981
+ if (minDate) {
1982
+ const minDateTime = new Date(minDate);
1983
+ minDateTime.setHours(0, 0, 0, 0);
1984
+ return minDateTime;
1985
+ }
1986
+ return today2;
1987
+ };
1988
+ const [currentDate, setCurrentDate] = (0, import_react4.useState)(() => getInitialDate());
1989
+ const [startDate, setStartDate] = (0, import_react4.useState)(
1990
+ dateRange[0] ? new Date(dateRange[0]) : null
1991
+ );
1992
+ const [endDate, setEndDate] = (0, import_react4.useState)(
1993
+ dateRange[0] && dateRange[1] ? new Date(dateRange[1]) : null
1994
+ );
1995
+ const [hoverDate, setHoverDate] = (0, import_react4.useState)(null);
1996
+ const [isSelectingEnd, setIsSelectingEnd] = (0, import_react4.useState)(
1997
+ dateRange[0] && !dateRange[1] ? true : false
1998
+ );
1999
+ const [isMobile, setIsMobile] = (0, import_react4.useState)(false);
2000
+ (0, import_react4.useEffect)(() => {
2001
+ const checkMobile = () => {
2002
+ setIsMobile(window.innerWidth <= 768);
2003
+ };
2004
+ checkMobile();
2005
+ window.addEventListener("resize", checkMobile);
2006
+ return () => window.removeEventListener("resize", checkMobile);
2007
+ }, []);
2008
+ const showSingle = showSingleCalendarProp || isMobile;
2009
+ const prevRangeRef = (0, import_react4.useRef)(dateRange);
2010
+ (0, import_react4.useEffect)(() => {
2011
+ const isSameRange = dateRange[0] === prevRangeRef.current[0] && dateRange[1] === prevRangeRef.current[1];
2012
+ if (isSameRange) return;
2013
+ prevRangeRef.current = dateRange;
2014
+ const nextStart = dateRange[0] ? new Date(dateRange[0]) : null;
2015
+ const nextEnd = dateRange[1] ? new Date(dateRange[1]) : null;
2016
+ setStartDate(nextStart);
2017
+ setEndDate(nextEnd);
2018
+ if (nextStart) {
2019
+ const startMonth = nextStart.getFullYear() * 12 + nextStart.getMonth();
2020
+ const currentMonthVal = currentDate.getFullYear() * 12 + currentDate.getMonth();
2021
+ const isVisibleInFirst = startMonth === currentMonthVal;
2022
+ const isVisibleInSecond = !showSingle && startMonth === currentMonthVal + 1;
2023
+ if (!isVisibleInFirst && !isVisibleInSecond) {
2024
+ setCurrentDate(new Date(nextStart.getFullYear(), nextStart.getMonth(), 1));
2025
+ }
2026
+ }
2027
+ }, [dateRange, showSingle]);
2028
+ const today = /* @__PURE__ */ new Date();
2029
+ today.setHours(0, 0, 0, 0);
2030
+ const firstMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);
2031
+ const secondMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1);
2032
+ const monthNames = [
2033
+ "January",
2034
+ "February",
2035
+ "March",
2036
+ "April",
2037
+ "May",
2038
+ "June",
2039
+ "July",
2040
+ "August",
2041
+ "September",
2042
+ "October",
2043
+ "November",
2044
+ "December"
2045
+ ];
2046
+ const dayNames = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
2047
+ const generateCalendarDays = (monthDate) => {
2048
+ const year = monthDate.getFullYear();
2049
+ const month = monthDate.getMonth();
2050
+ const firstDay = new Date(year, month, 1);
2051
+ const lastDay = new Date(year, month + 1, 0);
2052
+ const daysInMonth = lastDay.getDate();
2053
+ const startingDayOfWeek = firstDay.getDay();
2054
+ const days = [];
2055
+ for (let i = 0; i < startingDayOfWeek; i++) days.push(null);
2056
+ for (let day = 1; day <= daysInMonth; day++) days.push(new Date(year, month, day));
2057
+ return days;
2058
+ };
2059
+ const isSameDate = (d1, d2) => {
2060
+ if (!d1 || !d2) return false;
2061
+ return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate();
2062
+ };
2063
+ const isDateDisabled = (date) => {
2064
+ if (!date) return false;
2065
+ const checkDate = new Date(date);
2066
+ checkDate.setHours(0, 0, 0, 0);
2067
+ if (disablePastDates && checkDate < today) return true;
2068
+ if (minDate) {
2069
+ const m = new Date(minDate);
2070
+ m.setHours(0, 0, 0, 0);
2071
+ if (checkDate < m) return true;
2072
+ }
2073
+ if (maxDate) {
2074
+ const m = new Date(maxDate);
2075
+ m.setHours(0, 0, 0, 0);
2076
+ if (checkDate > m) return true;
2077
+ }
2078
+ return false;
2079
+ };
2080
+ const isDateBetweenRange = (date) => {
2081
+ if (!startDate || !date) return false;
2082
+ const comp = endDate || hoverDate;
2083
+ if (!comp) return false;
2084
+ const s = startDate < comp ? startDate : comp;
2085
+ const e = startDate < comp ? comp : startDate;
2086
+ return date > s && date < e;
2087
+ };
2088
+ const isDateInRange = (date) => {
2089
+ if (!startDate || !date) return false;
2090
+ const comp = endDate || hoverDate;
2091
+ if (!comp) return false;
2092
+ const s = startDate < comp ? startDate : comp;
2093
+ const e = startDate < comp ? comp : startDate;
2094
+ return date >= s && date <= e;
2095
+ };
2096
+ const handleDateClick = (date) => {
2097
+ if (isDateDisabled(date)) return;
2098
+ let nextStart = startDate;
2099
+ let nextEnd = endDate;
2100
+ const isSame = startDate && (0, import_dayjs2.default)(date).isSame(startDate, "day");
2101
+ if (!allowSameDates && isSame) {
2102
+ setStartDate(null);
2103
+ setEndDate(null);
2104
+ setIsSelectingEnd(false);
2105
+ onChangeRef.current(["", ""]);
2106
+ return;
2107
+ }
2108
+ if (!startDate || startDate && endDate) {
2109
+ nextStart = date;
2110
+ nextEnd = null;
2111
+ setStartDate(nextStart);
2112
+ setEndDate(nextEnd);
2113
+ setIsSelectingEnd(true);
2114
+ } else {
2115
+ if (date < startDate) {
2116
+ nextEnd = startDate;
2117
+ nextStart = date;
2118
+ } else {
2119
+ nextEnd = date;
2120
+ }
2121
+ setStartDate(nextStart);
2122
+ setEndDate(nextEnd);
2123
+ setIsSelectingEnd(false);
2124
+ }
2125
+ onChangeRef.current([
2126
+ nextStart ? (0, import_dayjs2.default)(nextStart).format("D MMM, YYYY") : "",
2127
+ nextEnd ? (0, import_dayjs2.default)(nextEnd).format("D MMM, YYYY") : ""
2128
+ ]);
2129
+ };
2130
+ const handleDateHover = (date) => {
2131
+ if (isDateDisabled(date)) return;
2132
+ if (isSelectingEnd && startDate && !endDate) setHoverDate(date);
2133
+ };
2134
+ const navigateMonth = (direction) => {
2135
+ const newDate = new Date(currentDate);
2136
+ newDate.setMonth(currentDate.getMonth() + direction);
2137
+ setCurrentDate(newDate);
2138
+ };
2139
+ const renderCalendar = (monthDate) => {
2140
+ const days = generateCalendarDays(monthDate);
2141
+ const monthName = monthNames[monthDate.getMonth()];
2142
+ const year = monthDate.getFullYear();
2143
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "tw-flex-1 tw-mb-2", children: [
2144
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-text-center tw-mb-4", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("h3", { className: "tw-typography-footNoteBold tw-text-gray-900 tw-m-0", children: [
2145
+ monthName,
2146
+ " ",
2147
+ year
2148
+ ] }) }),
2149
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-grid tw-grid-cols-7 tw-mb-2", children: dayNames.map((day) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-py-2 tw-text-center tw-typography-caption2 tw-text-gray-500", children: day }, day)) }),
2150
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-grid tw-grid-cols-7", children: days.map((date, index) => {
2151
+ if (!date) return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-h-7" }, index);
2152
+ const isStart = isSameDate(date, startDate);
2153
+ const isEnd = isSameDate(date, endDate);
2154
+ const isInRange = isDateBetweenRange(date);
2155
+ const isSelected = isDateInRange(date);
2156
+ const isDisabled = isDateDisabled(date);
2157
+ const isHovering = isSelectingEnd && hoverDate && isSameDate(date, hoverDate);
2158
+ let cellClasses = "tw-relative tw-z-20 tw-h-7 tw-w-7 tw-flex tw-items-center tw-justify-center tw-typography-caption1Bold tw-cursor-pointer tw-transition-all ";
2159
+ if (isDisabled) {
2160
+ cellClasses += "tw-text-gray-300 tw-cursor-not-allowed ";
2161
+ } else if (isStart || isEnd) {
2162
+ cellClasses += "tw-bg-black tw-text-white tw-rounded-full ";
2163
+ } else if (isInRange) {
2164
+ cellClasses += "tw-text-gray-900 ";
2165
+ } else {
2166
+ cellClasses += "tw-text-gray-700 hover:tw-bg-gray-100 tw-rounded-full ";
2167
+ }
2168
+ if (isHovering && !isEnd) {
2169
+ cellClasses += "tw-border-2 tw-border-gray-400 tw-border-dashed ";
2170
+ }
2171
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "tw-relative tw-flex tw-justify-center", children: [
2172
+ isInRange && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-absolute tw-inset-y-1 tw-inset-x-0 tw-bg-[#E5E9ED] tw-z-10" }),
2173
+ isStart && endDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-absolute tw-inset-y-1 tw-right-0 tw-left-1/2 tw-bg-[#E5E9ED] tw-z-10" }),
2174
+ isEnd && startDate && !isSameDate(startDate, endDate) && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "tw-absolute tw-inset-y-1 tw-left-0 tw-right-1/2 tw-bg-[#E5E9ED] tw-z-10" }),
2175
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2176
+ "div",
2177
+ {
2178
+ className: cellClasses,
2179
+ onClick: () => handleDateClick(date),
2180
+ onMouseEnter: () => handleDateHover(date),
2181
+ children: date.getDate()
2182
+ }
2183
+ )
2184
+ ] }, date.toISOString());
2185
+ }) })
2186
+ ] });
2187
+ };
2188
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "tw-relative tw-bg-white tw-w-full", children: [
2189
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "tw-flex tw-items-center tw-justify-between tw-absolute tw-inset-x-0 tw-top-0 tw-z-30 tw-px-4", children: [
2190
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2191
+ "div",
2192
+ {
2193
+ className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
2194
+ onClick: () => navigateMonth(-1),
2195
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chevron, { size: "medium" })
2196
+ }
2197
+ ),
2198
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2199
+ "div",
2200
+ {
2201
+ className: "tw-cursor-pointer tw-p-2 tw-rounded-full hover:tw-bg-gray-100",
2202
+ onClick: () => navigateMonth(1),
2203
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Chevron, { size: "medium", className: "tw-rotate-180" })
2204
+ }
2205
+ )
2206
+ ] }),
2207
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "tw-flex tw-gap-8 tw-pt-2", children: [
2208
+ renderCalendar(firstMonth),
2209
+ !showSingle && renderCalendar(secondMonth)
2210
+ ] })
2211
+ ] });
2212
+ };
2213
+ var InternalCalendar_default = (0, import_react4.memo)(InternalCalendar);
2214
+
2215
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
2216
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2217
+ import_dayjs3.default.extend(import_customParseFormat.default);
2218
+ import_dayjs3.default.extend(import_isSameOrBefore.default);
2219
+ var DEFAULT_TIME = { hour: "12", minute: "00", period: "PM" };
2220
+ function getPresets() {
2221
+ const today = /* @__PURE__ */ new Date();
2222
+ today.setHours(0, 0, 0, 0);
2223
+ return [
2224
+ {
2225
+ label: "Custom",
2226
+ key: "custom",
2227
+ getRange: () => [null, null]
2228
+ },
2229
+ {
2230
+ label: "Yesterday",
2231
+ key: "yesterday",
2232
+ getRange: () => {
2233
+ const d = new Date(today);
2234
+ d.setDate(d.getDate() - 1);
2235
+ return [d, d];
2236
+ }
2237
+ },
2238
+ {
2239
+ label: "Previous week",
2240
+ key: "previous-week",
2241
+ getRange: () => {
2242
+ const daysToLastSunday = today.getDay() === 0 ? 7 : today.getDay();
2243
+ const lastSunday = new Date(today);
2244
+ lastSunday.setDate(today.getDate() - daysToLastSunday);
2245
+ const monday = new Date(lastSunday);
2246
+ monday.setDate(lastSunday.getDate() - 6);
2247
+ return [monday, lastSunday];
2248
+ }
2249
+ },
2250
+ {
2251
+ label: "This month",
2252
+ key: "this-month",
2253
+ getRange: () => {
2254
+ const start = new Date(today.getFullYear(), today.getMonth(), 1);
2255
+ const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);
2256
+ return [start, end];
2257
+ }
2258
+ },
2259
+ {
2260
+ label: "Previous month",
2261
+ key: "previous-month",
2262
+ getRange: () => {
2263
+ const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);
2264
+ const end = new Date(today.getFullYear(), today.getMonth(), 0);
2265
+ return [start, end];
2266
+ }
2267
+ },
2268
+ {
2269
+ label: "Previous quarter",
2270
+ key: "previous-quarter",
2271
+ getRange: () => {
2272
+ const month = today.getMonth();
2273
+ const quarter = Math.floor(month / 3);
2274
+ const startMonth = (quarter - 1) * 3;
2275
+ const start = new Date(today.getFullYear(), startMonth, 1);
2276
+ const end = new Date(today.getFullYear(), startMonth + 3, 0);
2277
+ return [start, end];
2278
+ }
2279
+ }
2280
+ ];
2281
+ }
2282
+ function applyDateMask(v, prev) {
2283
+ if (v.length < prev.length) return v;
2284
+ const digits = v.replace(/[^\d]/g, "").slice(0, 8);
2285
+ if (digits.length >= 2) {
2286
+ const d = Number(digits.slice(0, 2));
2287
+ if (d < 1 || d > 31) return prev;
2288
+ }
2289
+ if (digits.length >= 4) {
2290
+ const m = Number(digits.slice(2, 4));
2291
+ if (m < 1 || m > 12) return prev;
2292
+ }
2293
+ let result = "";
2294
+ if (digits.length > 0) result += digits.slice(0, 2);
2295
+ if (digits.length >= 2) result += "-";
2296
+ if (digits.length > 2) result += digits.slice(2, 4);
2297
+ if (digits.length >= 4) result += "-";
2298
+ if (digits.length > 4) result += digits.slice(4, 8);
2299
+ return result.slice(0, 10);
2300
+ }
2301
+ function applyTimeMask(v, prev) {
2302
+ if (v.length < prev.length) return v;
2303
+ const digits = v.replace(/[^\d]/g, "").slice(0, 4);
2304
+ if (digits.length >= 2) {
2305
+ const h = Number(digits.slice(0, 2));
2306
+ if (h < 1 || h > 12) return prev;
2307
+ }
2308
+ if (digits.length >= 4) {
2309
+ const m = Number(digits.slice(2, 4));
2310
+ if (m > 59) return prev;
2311
+ }
2312
+ let result = "";
2313
+ if (digits.length > 0) result += digits.slice(0, 2);
2314
+ if (digits.length >= 2) result += ":";
2315
+ if (digits.length > 2) result += digits.slice(2, 4);
2316
+ if (v.toUpperCase().includes("A")) result += " AM";
2317
+ else if (v.toUpperCase().includes("P")) result += " PM";
2318
+ else if (digits.length === 4) result += " ";
2319
+ return result.slice(0, 8);
2320
+ }
2321
+ function formatForDisplay(date) {
2322
+ if (!date) return "";
2323
+ return (0, import_dayjs3.default)(date).format("DD-MM-YYYY");
2324
+ }
2325
+ function validateDateString(raw) {
2326
+ const regex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}$/;
2327
+ if (!regex.test(raw)) return false;
2328
+ const [d, m, y] = raw.split("-").map(Number);
2329
+ const date = new Date(y, m - 1, d);
2330
+ return date.getFullYear() === y && date.getMonth() === m - 1 && date.getDate() === d;
2331
+ }
2332
+ function validateTimeString(raw) {
2333
+ const regex = /^(0[1-9]|1[0-2]):(0[0-9]|[1-5][0-9])\s(AM|PM)$/i;
2334
+ return regex.test(raw);
2335
+ }
2336
+ function parseDateInput(raw) {
2337
+ if (!validateDateString(raw)) return null;
2338
+ return (0, import_dayjs3.default)(raw, "DD-MM-YYYY", true).toDate();
2339
+ }
2340
+ function parseTimeInput(raw) {
2341
+ if (!validateTimeString(raw)) return null;
2342
+ const match = raw.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
2343
+ if (!match) return null;
2344
+ return {
2345
+ hour: match[1].padStart(2, "0"),
2346
+ minute: match[2].padStart(2, "0"),
2347
+ period: match[3].toUpperCase()
2348
+ };
2349
+ }
2350
+ function formatTime(t) {
2351
+ return `${t.hour}:${t.minute} ${t.period}`;
2352
+ }
2353
+ var DateTimeInputGroup = (0, import_react5.memo)(function DateTimeInputGroup2({
2354
+ label,
2355
+ dateValue,
2356
+ timeValue,
2357
+ dateError,
2358
+ timeError,
2359
+ onDateChange,
2360
+ onTimeChange
2361
+ }) {
2362
+ const [isDateFocused, setIsDateFocused] = (0, import_react5.useState)(false);
2363
+ const [isTimeFocused, setIsTimeFocused] = (0, import_react5.useState)(false);
2364
+ const showDateError = dateError && !isDateFocused;
2365
+ const showTimeError = timeError && !isTimeFocused;
2366
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.headerGroup, children: [
2367
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: label }),
2368
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: AdvancedDateRangePicker_module_default.dateTimeColumn, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.dateTimeGroup, children: [
2369
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
2370
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2371
+ "input",
2372
+ {
2373
+ type: "text",
2374
+ placeholder: "dd-mm-yyyy",
2375
+ value: dateValue,
2376
+ onFocus: () => setIsDateFocused(true),
2377
+ onBlur: () => setIsDateFocused(false),
2378
+ onChange: (e) => onDateChange(e.target.value),
2379
+ className: (0, import_clsx10.default)(AdvancedDateRangePicker_module_default.dateInput, { [AdvancedDateRangePicker_module_default.inputError]: showDateError })
2380
+ }
2381
+ ),
2382
+ showDateError && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid date" })
2383
+ ] }),
2384
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
2385
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2386
+ "input",
2387
+ {
2388
+ type: "text",
2389
+ placeholder: "12:00 PM",
2390
+ value: timeValue,
2391
+ onFocus: () => setIsTimeFocused(true),
2392
+ onBlur: () => setIsTimeFocused(false),
2393
+ onChange: (e) => onTimeChange(e.target.value),
2394
+ className: (0, import_clsx10.default)(AdvancedDateRangePicker_module_default.timeInput, { [AdvancedDateRangePicker_module_default.inputError]: showTimeError })
2395
+ }
2396
+ ),
2397
+ showTimeError && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid time" })
2398
+ ] })
2399
+ ] }) })
2400
+ ] });
2401
+ });
2402
+ function AdvancedDateRangePicker({
2403
+ value,
2404
+ onChange,
2405
+ confirmLabel = "Done",
2406
+ className = "",
2407
+ disabled = false,
2408
+ disablePastDates = false,
2409
+ minDate = null,
2410
+ maxDate = null,
2411
+ showSingleCalendar = false,
2412
+ id = "adv-drp",
2413
+ defaultTimezone = "UTC",
2414
+ isTimezoneDisabled = false,
2415
+ timezoneOptions = [],
2416
+ defaultPreset = "custom",
2417
+ presets,
2418
+ hidePresets = false,
2419
+ hideFooter = false
2420
+ }) {
2421
+ var _a, _b, _c;
2422
+ const PRESETS = (0, import_react5.useMemo)(() => presets || getPresets(), [presets]);
2423
+ const [startDate, setStartDate] = (0, import_react5.useState)((_a = value == null ? void 0 : value.startDate) != null ? _a : null);
2424
+ const [endDate, setEndDate] = (0, import_react5.useState)((_b = value == null ? void 0 : value.endDate) != null ? _b : null);
2425
+ const [timezone, setTimezone] = (0, import_react5.useState)((_c = value == null ? void 0 : value.timezone) != null ? _c : defaultTimezone);
2426
+ const [fromDateStr, setFromDateStr] = (0, import_react5.useState)(formatForDisplay(startDate));
2427
+ const [toDateStr, setToDateStr] = (0, import_react5.useState)(formatForDisplay(endDate));
2428
+ const [fromTimeStr, setFromTimeStr] = (0, import_react5.useState)(
2429
+ (value == null ? void 0 : value.startTime) ? formatTime(value.startTime) : "12:00 PM"
2430
+ );
2431
+ const [toTimeStr, setToTimeStr] = (0, import_react5.useState)(
2432
+ (value == null ? void 0 : value.endTime) ? formatTime(value.endTime) : "12:00 PM"
2433
+ );
2434
+ const [activePreset, setActivePreset] = (0, import_react5.useState)(defaultPreset);
2435
+ const lastReportedValue = (0, import_react5.useRef)("");
2436
+ const isSingle = showSingleCalendar;
2437
+ const fromDateError = (0, import_react5.useMemo)(() => fromDateStr.length > 0 && (fromDateStr.length < 10 || !validateDateString(fromDateStr)), [fromDateStr]);
2438
+ const toDateError = (0, import_react5.useMemo)(() => toDateStr.length > 0 && (toDateStr.length < 10 || !validateDateString(toDateStr)), [toDateStr]);
2439
+ const fromTimeError = (0, import_react5.useMemo)(() => fromTimeStr.length > 0 && (fromTimeStr.length < 8 || !validateTimeString(fromTimeStr)), [fromTimeStr]);
2440
+ const toTimeError = (0, import_react5.useMemo)(() => toTimeStr.length > 0 && (toTimeStr.length < 8 || !validateTimeString(toTimeStr)), [toTimeStr]);
2441
+ const isReady = (0, import_react5.useMemo)(() => {
2442
+ return startDate !== null && endDate !== null && validateDateString(fromDateStr) && validateDateString(toDateStr) && validateTimeString(fromTimeStr) && validateTimeString(toTimeStr) && (0, import_dayjs3.default)(startDate).isSameOrBefore((0, import_dayjs3.default)(endDate), "day");
2443
+ }, [startDate, endDate, fromDateStr, toDateStr, fromTimeStr, toTimeStr]);
2444
+ (0, import_react5.useEffect)(() => {
2445
+ var _a2, _b2, _c2;
2446
+ if (value) {
2447
+ const isSameStart = value.startDate === startDate || value.startDate && startDate && (0, import_dayjs3.default)(value.startDate).isSame((0, import_dayjs3.default)(startDate), "day");
2448
+ const isSameEnd = value.endDate === endDate || value.endDate && endDate && (0, import_dayjs3.default)(value.endDate).isSame((0, import_dayjs3.default)(endDate), "day");
2449
+ const isSameTimezone = value.timezone === timezone;
2450
+ const isSameStartTime = !value.startTime || formatTime(value.startTime) === fromTimeStr;
2451
+ const isSameEndTime = !value.endTime || formatTime(value.endTime) === toTimeStr;
2452
+ const isSamePreset = value.activePreset === activePreset;
2453
+ if (!isSameStart || !isSameEnd || !isSameTimezone || !isSameStartTime || !isSameEndTime || !isSamePreset) {
2454
+ if (!isSameStart) setStartDate((_a2 = value.startDate) != null ? _a2 : null);
2455
+ if (!isSameEnd) setEndDate((_b2 = value.endDate) != null ? _b2 : null);
2456
+ if (!isSameTimezone) setTimezone((_c2 = value.timezone) != null ? _c2 : defaultTimezone);
2457
+ if (value.startTime && !isSameStartTime) setFromTimeStr(formatTime(value.startTime));
2458
+ if (value.endTime && !isSameEndTime) setToTimeStr(formatTime(value.endTime));
2459
+ if (value.activePreset && !isSamePreset) setActivePreset(value.activePreset);
2460
+ }
2461
+ }
2462
+ }, [value, defaultTimezone, PRESETS]);
2463
+ (0, import_react5.useEffect)(() => {
2464
+ setFromDateStr(formatForDisplay(startDate));
2465
+ }, [startDate]);
2466
+ (0, import_react5.useEffect)(() => {
2467
+ var _a2, _b2;
2468
+ if (hideFooter && isReady) {
2469
+ const fromTime = (_a2 = parseTimeInput(fromTimeStr)) != null ? _a2 : DEFAULT_TIME;
2470
+ const toTime = (_b2 = parseTimeInput(toTimeStr)) != null ? _b2 : DEFAULT_TIME;
2471
+ const serialized = `${startDate == null ? void 0 : startDate.toISOString()}_${endDate == null ? void 0 : endDate.toISOString()}_${fromTimeStr}_${toTimeStr}_${timezone}_${activePreset}`;
2472
+ if (serialized !== lastReportedValue.current) {
2473
+ lastReportedValue.current = serialized;
2474
+ onChange == null ? void 0 : onChange({
2475
+ startDate,
2476
+ endDate,
2477
+ startTime: fromTime,
2478
+ endTime: toTime,
2479
+ timezone,
2480
+ activePreset
2481
+ });
2482
+ }
2483
+ }
2484
+ }, [hideFooter, isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone, activePreset]);
2485
+ (0, import_react5.useEffect)(() => {
2486
+ setToDateStr(formatForDisplay(endDate));
2487
+ }, [endDate]);
2488
+ const rangeValue = (0, import_react5.useMemo)(() => [
2489
+ startDate ? startDate.toISOString() : "",
2490
+ endDate ? endDate.toISOString() : ""
2491
+ ], [startDate, endDate]);
2492
+ const handleRangeChange = (0, import_react5.useCallback)(
2493
+ (range) => {
2494
+ const [s, e] = range;
2495
+ if (s) {
2496
+ const sDateByDayjs = (0, import_dayjs3.default)(s, "D MMM, YYYY").toDate();
2497
+ setStartDate(sDateByDayjs);
2498
+ } else {
2499
+ setStartDate(null);
2500
+ }
2501
+ if (e) {
2502
+ const eDateByDayjs = (0, import_dayjs3.default)(e, "D MMM, YYYY").toDate();
2503
+ setEndDate(eDateByDayjs);
2504
+ } else {
2505
+ setEndDate(null);
2506
+ }
2507
+ setActivePreset("custom");
2508
+ },
2509
+ []
2510
+ );
2511
+ const handlePreset = (0, import_react5.useCallback)(
2512
+ (preset) => {
2513
+ const [s, e] = preset.getRange();
2514
+ setStartDate(s);
2515
+ setEndDate(e);
2516
+ setActivePreset(preset.key);
2517
+ },
2518
+ []
2519
+ );
2520
+ const handleFromDateChange = (0, import_react5.useCallback)((v) => {
2521
+ const masked = applyDateMask(v, fromDateStr);
2522
+ setFromDateStr(masked);
2523
+ setActivePreset("custom");
2524
+ if (masked.length === 10) {
2525
+ const parsed = parseDateInput(masked);
2526
+ if (parsed) {
2527
+ setStartDate(parsed);
2528
+ if (endDate && (0, import_dayjs3.default)(parsed).isAfter((0, import_dayjs3.default)(endDate), "day")) {
2529
+ setEndDate(null);
2530
+ }
2531
+ }
2532
+ }
2533
+ }, [fromDateStr, endDate]);
2534
+ const handleToDateChange = (0, import_react5.useCallback)((v) => {
2535
+ const masked = applyDateMask(v, toDateStr);
2536
+ setToDateStr(masked);
2537
+ setActivePreset("custom");
2538
+ if (masked.length === 10) {
2539
+ const parsed = parseDateInput(masked);
2540
+ if (parsed) {
2541
+ setEndDate(parsed);
2542
+ if (startDate && (0, import_dayjs3.default)(parsed).isBefore((0, import_dayjs3.default)(startDate), "day")) {
2543
+ setStartDate(null);
2544
+ }
2545
+ }
2546
+ }
2547
+ }, [toDateStr, startDate]);
2548
+ const handleFromTimeChange = (0, import_react5.useCallback)((v) => {
2549
+ const masked = applyTimeMask(v, fromTimeStr);
2550
+ setFromTimeStr(masked);
2551
+ setActivePreset("custom");
2552
+ }, [fromTimeStr]);
2553
+ const handleToTimeChange = (0, import_react5.useCallback)((v) => {
2554
+ const masked = applyTimeMask(v, toTimeStr);
2555
+ setToTimeStr(masked);
2556
+ setActivePreset("custom");
2557
+ }, [toTimeStr]);
2558
+ const handleDone = (0, import_react5.useCallback)(() => {
2559
+ var _a2, _b2;
2560
+ if (!isReady) return;
2561
+ const fromTime = (_a2 = parseTimeInput(fromTimeStr)) != null ? _a2 : DEFAULT_TIME;
2562
+ const toTime = (_b2 = parseTimeInput(toTimeStr)) != null ? _b2 : DEFAULT_TIME;
2563
+ onChange == null ? void 0 : onChange({
2564
+ startDate,
2565
+ endDate,
2566
+ startTime: fromTime,
2567
+ endTime: toTime,
2568
+ timezone,
2569
+ activePreset
2570
+ });
2571
+ }, [isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone, activePreset]);
2572
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_clsx10.default)(AdvancedDateRangePicker_module_default.root, className, {
2573
+ [AdvancedDateRangePicker_module_default.singleCalendar]: isSingle,
2574
+ [AdvancedDateRangePicker_module_default.hidePresets]: hidePresets
2575
+ }), id, children: [
2576
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.inner, children: [
2577
+ !hidePresets && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("aside", { className: AdvancedDateRangePicker_module_default.left, children: PRESETS.map((p) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2578
+ "button",
2579
+ {
2580
+ type: "button",
2581
+ onClick: () => handlePreset(p),
2582
+ className: (0, import_clsx10.default)(AdvancedDateRangePicker_module_default.sidebarItem, {
2583
+ [AdvancedDateRangePicker_module_default.sidebarItemActive]: activePreset === p.key
2584
+ }),
2585
+ children: p.label
2586
+ },
2587
+ p.key
2588
+ )) }),
2589
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.main, children: [
2590
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("header", { className: AdvancedDateRangePicker_module_default.header, children: [
2591
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.timezoneWrapper, children: [
2592
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: "Timezone" }),
2593
+ isTimezoneDisabled ? (
2594
+ /* Disabled state: plain text badge instead of empty dropdown */
2595
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: AdvancedDateRangePicker_module_default.timezoneDisabledBadge, children: timezone })
2596
+ ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2597
+ Select_default,
2598
+ {
2599
+ value: timezone,
2600
+ onChange: (val) => {
2601
+ if (val) setTimezone(String(val));
2602
+ },
2603
+ options: timezoneOptions,
2604
+ size: "small",
2605
+ allowClear: false,
2606
+ enableSearch: false,
2607
+ wrapperClassName: AdvancedDateRangePicker_module_default.timezoneSelectContainer,
2608
+ inputClassName: AdvancedDateRangePicker_module_default.timezoneSelectInput
2609
+ }
2610
+ )
2611
+ ] }),
2612
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: AdvancedDateRangePicker_module_default.dateTimeWrapper, children: [
2613
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2614
+ DateTimeInputGroup,
2615
+ {
2616
+ label: "From",
2617
+ dateValue: fromDateStr,
2618
+ timeValue: fromTimeStr,
2619
+ dateError: fromDateError,
2620
+ timeError: fromTimeError,
2621
+ onDateChange: handleFromDateChange,
2622
+ onTimeChange: handleFromTimeChange
2623
+ }
2624
+ ),
2625
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2626
+ DateTimeInputGroup,
2627
+ {
2628
+ label: "To",
2629
+ dateValue: toDateStr,
2630
+ timeValue: toTimeStr,
2631
+ dateError: toDateError,
2632
+ timeError: toTimeError,
2633
+ onDateChange: handleToDateChange,
2634
+ onTimeChange: handleToTimeChange
2635
+ }
2636
+ )
2637
+ ] })
2638
+ ] }),
2639
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: AdvancedDateRangePicker_module_default.body, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2640
+ InternalCalendar_default,
2641
+ {
2642
+ id: `${id}-calendar`,
2643
+ dateRange: rangeValue,
2644
+ onChange: handleRangeChange,
2645
+ disablePastDates,
2646
+ minDate,
2647
+ maxDate,
2648
+ showSingleCalendar: isSingle
2649
+ }
2650
+ ) })
2651
+ ] })
2652
+ ] }),
2653
+ !hideFooter && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("footer", { className: AdvancedDateRangePicker_module_default.footer, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2654
+ Button_default,
2655
+ {
2656
+ onClick: handleDone,
2657
+ disabled: disabled || !isReady,
2658
+ shape: "round",
2659
+ children: confirmLabel
2660
+ }
2661
+ ) })
2662
+ ] });
2663
+ }
2664
+ AdvancedDateRangePicker.displayName = "AdvancedDateRangePicker";
2665
+ var AdvancedDateRangePicker_default = AdvancedDateRangePicker;
2666
+
1938
2667
  // src/atom/Slider/Slider.tsx
1939
2668
  var import_antd9 = require("antd");
1940
- var import_clsx10 = __toESM(require("clsx"));
2669
+ var import_clsx11 = __toESM(require("clsx"));
1941
2670
 
1942
2671
  // src/atom/Slider/Slider.module.scss
1943
2672
  var Slider_module_default = { "label": "Slider-module__label___9Uea-", "slider": "Slider-module__slider___JCS-c", "disableFill": "Slider-module__disableFill___rjbsy" };
1944
2673
 
1945
2674
  // src/atom/Slider/Slider.tsx
1946
- var import_jsx_runtime16 = require("react/jsx-runtime");
2675
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1947
2676
  function Slider(props) {
1948
2677
  const {
1949
2678
  label = "",
@@ -1967,12 +2696,12 @@ function Slider(props) {
1967
2696
  tooltipPlacement,
1968
2697
  disableFill = false
1969
2698
  } = props;
1970
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1971
- label && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: Slider_module_default.label, children: label }),
1972
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2699
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
2700
+ label && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: Slider_module_default.label, children: label }),
2701
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1973
2702
  import_antd9.Slider,
1974
2703
  {
1975
- className: (0, import_clsx10.default)(
2704
+ className: (0, import_clsx11.default)(
1976
2705
  Slider_module_default.slider,
1977
2706
  className,
1978
2707
  Slider_module_default[disableFill ? "disableFill" : ""]
@@ -2004,14 +2733,287 @@ function Slider(props) {
2004
2733
  Slider.displayName = "Slider";
2005
2734
  var Slider_default = Slider;
2006
2735
 
2736
+ // src/atom/Table/Table.tsx
2737
+ var React5 = __toESM(require("react"));
2738
+ var import_antd10 = require("antd");
2739
+ var import_clsx12 = __toESM(require("clsx"));
2740
+
2741
+ // src/atom/Table/Table.module.scss
2742
+ var Table_module_default = { "tableWrapper": "Table-module__tableWrapper___3cqiD", "isAccordion": "Table-module__isAccordion___-uIs6", "isToolbar": "Table-module__isToolbar___LdS-m", "hasCustomHeaderCell": "Table-module__hasCustomHeaderCell___AtCk8", "table": "Table-module__table___5d7g0", "ant-table-selection-column": "Table-module__ant-table-selection-column___H9vtu", "hasCustomBodyCell": "Table-module__hasCustomBodyCell___sf8j8", "firstRow": "Table-module__firstRow___Xq-Hi", "lastRow": "Table-module__lastRow___ahv4g", "showHoverEffect": "Table-module__showHoverEffect___IyKyO", "columnHeader": "Table-module__columnHeader___Unr6d", "columnHeaderLeft": "Table-module__columnHeaderLeft___mp7pK", "columnHeaderSortArea": "Table-module__columnHeaderSortArea___jrIYo", "columnHeaderLabel": "Table-module__columnHeaderLabel___A-mRu", "columnHeaderSortIcon": "Table-module__columnHeaderSortIcon___mWVZN", "columnHeaderSortIconActive": "Table-module__columnHeaderSortIconActive___wHAqC", "columnHeaderFilterWrapper": "Table-module__columnHeaderFilterWrapper___DnSve", "columnHeaderFilterBtn": "Table-module__columnHeaderFilterBtn___NR7DY", "columnHeaderFilterBtnActive": "Table-module__columnHeaderFilterBtnActive___JdO11", "columnHeaderFilterBadge": "Table-module__columnHeaderFilterBadge___-Q2T2", "columnHeaderFilterDropdown": "Table-module__columnHeaderFilterDropdown___M-fD4" };
2743
+
2744
+ // src/atom/Table/Table.tsx
2745
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2746
+ function buildPagination(pagination, overrides = {}) {
2747
+ var _a, _b, _c, _d;
2748
+ if (pagination === false) {
2749
+ return false;
2750
+ }
2751
+ const defaults = {
2752
+ showSizeChanger: true,
2753
+ pageSizeOptions: ["10", "25", "50"],
2754
+ locale: { items_per_page: "" },
2755
+ // Removes "/ page" text
2756
+ showTotal: (total, range) => `${range[0]}\u2013${range[1]} of ${total} items`
2757
+ };
2758
+ const baseConfig = pagination === true || pagination === void 0 ? defaults : __spreadValues(__spreadValues({}, defaults), pagination);
2759
+ return __spreadProps(__spreadValues({}, baseConfig), {
2760
+ total: (_a = overrides.total) != null ? _a : baseConfig.total,
2761
+ current: (_b = overrides.current) != null ? _b : baseConfig.current,
2762
+ pageSize: (_c = overrides.pageSize) != null ? _c : baseConfig.pageSize,
2763
+ onChange: (_d = overrides.onChange) != null ? _d : baseConfig.onChange
2764
+ });
2765
+ }
2766
+ function nextSortOrder(current) {
2767
+ if (current === void 0) return "ascend";
2768
+ if (current === "ascend") return "descend";
2769
+ return void 0;
2770
+ }
2771
+ function ColumnHeader({
2772
+ label,
2773
+ sortable = false,
2774
+ sortOrder,
2775
+ onSortChange,
2776
+ sortIcon,
2777
+ filterCount = 0,
2778
+ filterIcon,
2779
+ filterContent,
2780
+ className = ""
2781
+ }) {
2782
+ const [filterOpen, setFilterOpen] = React5.useState(false);
2783
+ const wrapperRef = React5.useRef(null);
2784
+ const filterActive = filterCount > 0;
2785
+ const hasFilter = filterContent !== void 0 && filterIcon !== void 0;
2786
+ const hasSort = sortable && sortIcon !== void 0;
2787
+ React5.useEffect(() => {
2788
+ if (!filterOpen) return;
2789
+ const onOutside = (e) => {
2790
+ if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {
2791
+ setFilterOpen(false);
2792
+ }
2793
+ };
2794
+ document.addEventListener("mousedown", onOutside);
2795
+ return () => document.removeEventListener("mousedown", onOutside);
2796
+ }, [filterOpen]);
2797
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: Table_module_default.columnHeader, ref: wrapperRef, children: [
2798
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: Table_module_default.columnHeaderLeft, children: hasSort ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2799
+ "button",
2800
+ {
2801
+ type: "button",
2802
+ className: Table_module_default.columnHeaderSortArea,
2803
+ onClick: () => onSortChange == null ? void 0 : onSortChange(nextSortOrder(sortOrder)),
2804
+ "aria-label": typeof label === "string" ? `Sort by ${label}` : "Sort",
2805
+ children: [
2806
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: (0, import_clsx12.default)(Table_module_default.columnHeaderLabel, "tw-typography-caption2Bold tw-text-color-text-weak", className), children: label }),
2807
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2808
+ "span",
2809
+ {
2810
+ className: (0, import_clsx12.default)(Table_module_default.columnHeaderSortIcon, {
2811
+ [Table_module_default.columnHeaderSortIconActive]: sortOrder !== void 0
2812
+ }),
2813
+ children: sortIcon
2814
+ }
2815
+ )
2816
+ ]
2817
+ }
2818
+ ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: (0, import_clsx12.default)(Table_module_default.columnHeaderLabel, "tw-typography-caption2Bold tw-text-color-text-weak", className), children: label }) }),
2819
+ hasFilter && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: Table_module_default.columnHeaderFilterWrapper, children: [
2820
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2821
+ "button",
2822
+ {
2823
+ type: "button",
2824
+ className: (0, import_clsx12.default)(Table_module_default.columnHeaderFilterBtn, {
2825
+ [Table_module_default.columnHeaderFilterBtnActive]: filterActive
2826
+ }),
2827
+ onClick: () => setFilterOpen((v) => !v),
2828
+ "aria-label": typeof label === "string" ? `Filter ${label}` : "Filter",
2829
+ "aria-expanded": filterOpen,
2830
+ "aria-haspopup": "dialog",
2831
+ children: [
2832
+ filterIcon,
2833
+ filterActive && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: Table_module_default.columnHeaderFilterBadge, children: filterCount })
2834
+ ]
2835
+ }
2836
+ ),
2837
+ filterOpen && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: Table_module_default.columnHeaderFilterDropdown, role: "dialog", children: filterContent })
2838
+ ] })
2839
+ ] });
2840
+ }
2841
+ function processColumns(columns, headerCellClassName, bodyCellClassName) {
2842
+ if (!columns) return void 0;
2843
+ return columns.map((col) => {
2844
+ const _a = col, { headerProps, title, onHeaderCell, onCell } = _a, rest = __objRest(_a, ["headerProps", "title", "onHeaderCell", "onCell"]);
2845
+ const resolvedOnHeaderCell = (column) => {
2846
+ var _a2;
2847
+ const base = (_a2 = onHeaderCell == null ? void 0 : onHeaderCell(column)) != null ? _a2 : {};
2848
+ return __spreadProps(__spreadValues({}, base), {
2849
+ className: (0, import_clsx12.default)(base.className, headerCellClassName)
2850
+ });
2851
+ };
2852
+ const resolvedOnCell = (record, rowIndex) => {
2853
+ var _a2;
2854
+ const base = (_a2 = onCell == null ? void 0 : onCell(record, rowIndex)) != null ? _a2 : {};
2855
+ return __spreadProps(__spreadValues({}, base), {
2856
+ className: (0, import_clsx12.default)(base.className, bodyCellClassName)
2857
+ });
2858
+ };
2859
+ const processedTitle = headerProps ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ColumnHeader, __spreadValues({ label: title }, headerProps)) : title;
2860
+ return __spreadProps(__spreadValues({}, rest), {
2861
+ title: processedTitle,
2862
+ onHeaderCell: resolvedOnHeaderCell,
2863
+ onCell: resolvedOnCell
2864
+ });
2865
+ });
2866
+ }
2867
+ function Table(props) {
2868
+ var _b;
2869
+ const _a = props, {
2870
+ size = "middle",
2871
+ variant = "default",
2872
+ isAccordion = false,
2873
+ isToolbar = false,
2874
+ className = "",
2875
+ pagination,
2876
+ loading,
2877
+ total,
2878
+ current,
2879
+ pageSize,
2880
+ onPaginationChange,
2881
+ columns,
2882
+ rowSelection,
2883
+ rowKey = "key",
2884
+ onRow,
2885
+ dataSource,
2886
+ emptyState,
2887
+ hideHeader,
2888
+ loadingIndicator,
2889
+ style,
2890
+ headerCellClassName,
2891
+ bodyCellClassName,
2892
+ rowClassName
2893
+ } = _a, rest = __objRest(_a, [
2894
+ "size",
2895
+ "variant",
2896
+ "isAccordion",
2897
+ "isToolbar",
2898
+ "className",
2899
+ "pagination",
2900
+ "loading",
2901
+ "total",
2902
+ "current",
2903
+ "pageSize",
2904
+ "onPaginationChange",
2905
+ "columns",
2906
+ "rowSelection",
2907
+ "rowKey",
2908
+ "onRow",
2909
+ "dataSource",
2910
+ "emptyState",
2911
+ "hideHeader",
2912
+ "loadingIndicator",
2913
+ "style",
2914
+ "headerCellClassName",
2915
+ "bodyCellClassName",
2916
+ "rowClassName"
2917
+ ]);
2918
+ const resolvedPagination = buildPagination(pagination, {
2919
+ total,
2920
+ current,
2921
+ pageSize,
2922
+ onChange: onPaginationChange
2923
+ });
2924
+ const processedColumns = React5.useMemo(
2925
+ () => processColumns(columns, headerCellClassName, bodyCellClassName),
2926
+ [columns, headerCellClassName, bodyCellClassName]
2927
+ );
2928
+ const resolvedRowSelection = React5.useMemo(() => {
2929
+ if (!rowSelection) return void 0;
2930
+ return __spreadValues({
2931
+ columnWidth: 48
2932
+ }, rowSelection);
2933
+ }, [rowSelection]);
2934
+ const resolvedOnRow = React5.useMemo(() => {
2935
+ const onChange = resolvedRowSelection == null ? void 0 : resolvedRowSelection.onChange;
2936
+ if (variant !== "selectable" || !onChange) return onRow;
2937
+ return (record, index) => {
2938
+ var _a2;
2939
+ const base = (_a2 = onRow == null ? void 0 : onRow(record, index)) != null ? _a2 : {};
2940
+ const getKey = (r, i) => typeof rowKey === "function" ? rowKey(r, i) : r[rowKey];
2941
+ return __spreadProps(__spreadValues({}, base), {
2942
+ style: __spreadValues({ cursor: "pointer" }, base.style),
2943
+ onClick: (e) => {
2944
+ var _a3, _b2;
2945
+ (_a3 = base.onClick) == null ? void 0 : _a3.call(base, e);
2946
+ const key = getKey(record, index);
2947
+ const current2 = (_b2 = resolvedRowSelection.selectedRowKeys) != null ? _b2 : [];
2948
+ const isSelected = current2.some((k) => k === key);
2949
+ const newKeys = isSelected ? current2.filter((k) => k !== key) : [...current2, key];
2950
+ const newRows = (dataSource != null ? dataSource : []).filter(
2951
+ (r, idx) => newKeys.some((k) => k === getKey(r, idx))
2952
+ );
2953
+ onChange(newKeys, newRows, { type: "single" });
2954
+ }
2955
+ });
2956
+ };
2957
+ }, [variant, resolvedRowSelection, rowKey, onRow, dataSource]);
2958
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2959
+ "div",
2960
+ {
2961
+ className: (0, import_clsx12.default)(
2962
+ Table_module_default.tableWrapper,
2963
+ Table_module_default.showHoverEffect,
2964
+ {
2965
+ [Table_module_default.isAccordion]: isAccordion,
2966
+ [Table_module_default.isToolbar]: isToolbar,
2967
+ [Table_module_default.hasCustomHeaderCell]: !!headerCellClassName,
2968
+ [Table_module_default.hasCustomBodyCell]: !!bodyCellClassName
2969
+ },
2970
+ className
2971
+ ),
2972
+ style,
2973
+ "data-testid": "lumina-table",
2974
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2975
+ import_antd10.Table,
2976
+ __spreadProps(__spreadValues({
2977
+ className: Table_module_default.table,
2978
+ size,
2979
+ pagination: resolvedPagination,
2980
+ columns: processedColumns,
2981
+ rowSelection: resolvedRowSelection,
2982
+ rowKey,
2983
+ onRow: resolvedOnRow,
2984
+ dataSource,
2985
+ showHeader: !hideHeader,
2986
+ locale: {
2987
+ emptyText: loading && loadingIndicator ? loadingIndicator : loading ? " " : emptyState
2988
+ }
2989
+ }, rest), {
2990
+ loading: loadingIndicator ? { spinning: !!loading && ((_b = dataSource == null ? void 0 : dataSource.length) != null ? _b : 0) > 0, indicator: loadingIndicator } : loading,
2991
+ rowClassName: (record, index) => {
2992
+ var _a2;
2993
+ return (0, import_clsx12.default)(
2994
+ {
2995
+ [Table_module_default.firstRow]: index === 0,
2996
+ [Table_module_default.lastRow]: index === ((_a2 = dataSource == null ? void 0 : dataSource.length) != null ? _a2 : 0) - 1
2997
+ },
2998
+ typeof rowClassName === "function" ? rowClassName(record, index) : rowClassName
2999
+ );
3000
+ }
3001
+ })
3002
+ )
3003
+ }
3004
+ );
3005
+ }
3006
+ Table.displayName = "Table";
3007
+ var Table_default = Table;
3008
+
2007
3009
  // src/molecules/UserProfile/UserProfile.tsx
2008
- var import_clsx11 = __toESM(require("clsx"));
3010
+ var import_clsx13 = __toESM(require("clsx"));
2009
3011
 
2010
3012
  // src/molecules/UserProfile/UserProfile.module.scss
2011
3013
  var UserProfile_module_default = { "userProfile": "UserProfile-module__userProfile___cRMm9", "profileContent": "UserProfile-module__profileContent___tfy8E", "profileHeader": "UserProfile-module__profileHeader___5qYbt", "profileName": "UserProfile-module__profileName___x8pg-", "profileEmail": "UserProfile-module__profileEmail___ZWKDd" };
2012
3014
 
2013
3015
  // src/molecules/UserProfile/UserProfile.tsx
2014
- var import_jsx_runtime17 = require("react/jsx-runtime");
3016
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2015
3017
  var UserProfile = ({
2016
3018
  firstName = "",
2017
3019
  lastName = "",
@@ -2028,8 +3030,8 @@ var UserProfile = ({
2028
3030
  emailClassName = ""
2029
3031
  }) => {
2030
3032
  const fullName = `${firstName} ${lastName}`;
2031
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: (0, import_clsx11.default)(UserProfile_module_default.userProfile, className), children: [
2032
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
3033
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: (0, import_clsx13.default)(UserProfile_module_default.userProfile, className), children: [
3034
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2033
3035
  Avatar,
2034
3036
  {
2035
3037
  img: profileImg,
@@ -2040,16 +3042,16 @@ var UserProfile = ({
2040
3042
  size: avatarSize
2041
3043
  }
2042
3044
  ),
2043
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: UserProfile_module_default.profileContent, children: [
2044
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: UserProfile_module_default.profileHeader, children: [
2045
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: (0, import_clsx11.default)(nameClassName || (0, import_clsx11.default)(UserProfile_module_default.profileName, "tw-typography-body2Bold")), children: [
3045
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: UserProfile_module_default.profileContent, children: [
3046
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: UserProfile_module_default.profileHeader, children: [
3047
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("p", { className: (0, import_clsx13.default)(nameClassName || (0, import_clsx13.default)(UserProfile_module_default.profileName, "tw-typography-body2Bold")), children: [
2046
3048
  firstName,
2047
3049
  " ",
2048
3050
  lastName
2049
3051
  ] }),
2050
- showTag && tagProps && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Tag, __spreadValues({}, tagProps))
3052
+ showTag && tagProps && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Tag, __spreadValues({}, tagProps))
2051
3053
  ] }),
2052
- email && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: (0, import_clsx11.default)(emailClassName || (0, import_clsx11.default)(UserProfile_module_default.profileEmail, "tw-typography-caption3", "amp-mask")), children: email })
3054
+ email && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: (0, import_clsx13.default)(emailClassName || (0, import_clsx13.default)(UserProfile_module_default.profileEmail, "tw-typography-caption3", "amp-mask")), children: email })
2053
3055
  ] })
2054
3056
  ] }, uniqueKey);
2055
3057
  };
@@ -2057,6 +3059,7 @@ UserProfile.displayName = "UserProfile";
2057
3059
  var UserProfile_default = UserProfile;
2058
3060
  // Annotate the CommonJS export names for ESM import in node:
2059
3061
  0 && (module.exports = {
3062
+ AdvancedDateRangePicker,
2060
3063
  Avatar,
2061
3064
  Button,
2062
3065
  Checkbox,
@@ -2067,6 +3070,7 @@ var UserProfile_default = UserProfile;
2067
3070
  Select,
2068
3071
  Slider,
2069
3072
  Switch,
3073
+ Table,
2070
3074
  Tag,
2071
3075
  Tooltip,
2072
3076
  UserProfile