@itilite/lumina-ui 1.1.10 → 1.1.12

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 (46) hide show
  1. package/dist/atom/RangePicker/RangePicker.js +106 -103
  2. package/dist/atom/RangePicker/RangePicker.mjs +3 -3
  3. package/dist/atom/Select/Select.d.mts +1 -4
  4. package/dist/atom/Select/Select.d.ts +1 -4
  5. package/dist/atom/Select/Select.js +106 -103
  6. package/dist/atom/Select/Select.mjs +1 -1
  7. package/dist/chunk-35KDS27M.mjs +618 -0
  8. package/dist/chunk-3AWYHB3A.mjs +618 -0
  9. package/dist/chunk-3WWAOBS6.mjs +633 -0
  10. package/dist/chunk-57YKBWEI.mjs +673 -0
  11. package/dist/chunk-5BBLW4MR.mjs +670 -0
  12. package/dist/chunk-6XGVIU52.mjs +679 -0
  13. package/dist/chunk-BKPTZNXK.mjs +618 -0
  14. package/dist/chunk-CNN74G3M.mjs +666 -0
  15. package/dist/chunk-CPOZJCLV.mjs +681 -0
  16. package/dist/chunk-DRNY4L7J.mjs +618 -0
  17. package/dist/chunk-E4FCLHYA.mjs +678 -0
  18. package/dist/chunk-G7I4NT42.mjs +720 -0
  19. package/dist/chunk-GU5F7Z7I.mjs +681 -0
  20. package/dist/chunk-HPDJYQXM.mjs +663 -0
  21. package/dist/chunk-HTYOI6JT.mjs +618 -0
  22. package/dist/chunk-IIJUGDEJ.mjs +618 -0
  23. package/dist/chunk-J327EMX2.mjs +663 -0
  24. package/dist/chunk-J3ZBXBJ2.mjs +689 -0
  25. package/dist/chunk-JEAZCSST.mjs +676 -0
  26. package/dist/chunk-KDR6M52K.mjs +723 -0
  27. package/dist/chunk-LEPDKBT2.mjs +709 -0
  28. package/dist/chunk-LH55S6HJ.mjs +618 -0
  29. package/dist/chunk-MO7JTKPH.mjs +618 -0
  30. package/dist/chunk-MWC57EU6.mjs +666 -0
  31. package/dist/chunk-OMXQ6VML.mjs +618 -0
  32. package/dist/chunk-PSESRID3.mjs +681 -0
  33. package/dist/chunk-RAWVG2MM.mjs +618 -0
  34. package/dist/chunk-T2Y6AXM5.mjs +618 -0
  35. package/dist/chunk-THT4ALWQ.mjs +618 -0
  36. package/dist/chunk-TWV2Z27S.mjs +618 -0
  37. package/dist/chunk-UPUD2FQL.mjs +618 -0
  38. package/dist/chunk-UUTSL2NM.mjs +618 -0
  39. package/dist/chunk-W7J4GMPI.mjs +618 -0
  40. package/dist/chunk-WCYB5OTY.mjs +618 -0
  41. package/dist/chunk-YCAOWGDP.mjs +618 -0
  42. package/dist/chunk-ZUUAXTPM.mjs +618 -0
  43. package/dist/index.js +106 -103
  44. package/dist/index.mjs +17 -17
  45. package/dist/styles.css +199 -203
  46. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -761,6 +761,46 @@ var LoadingSpinner_default = LoadingSpinner;
761
761
 
762
762
  // src/atom/Select/Select.tsx
763
763
  var import_jsx_runtime14 = require("react/jsx-runtime");
764
+ var InputWrapper = (0, import_react2.memo)(({ children, disabled, disabledTooltip }) => {
765
+ if (disabled && disabledTooltip)
766
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tooltip_default, { title: disabledTooltip, children });
767
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children });
768
+ });
769
+ var OptionItem = (0, import_react2.memo)(({
770
+ option,
771
+ index,
772
+ isSelected,
773
+ isHighlighted,
774
+ experience,
775
+ size,
776
+ optionClassName,
777
+ onSelectHandler,
778
+ onMouseEnterHandler
779
+ }) => {
780
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
781
+ "div",
782
+ {
783
+ onClick: () => onSelectHandler(option),
784
+ onMouseEnter: () => onMouseEnterHandler(index),
785
+ className: (0, import_clsx8.default)(
786
+ "tw-transition-all tw-duration-150",
787
+ { "tw-typography-body2": size !== "small" },
788
+ { "tw-typography-caption1": size === "small" },
789
+ optionClassName
790
+ ),
791
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
792
+ "div",
793
+ {
794
+ className: (0, import_clsx8.default)(
795
+ "tw-px-4 tw-cursor-pointer tw-py-2 tw-mx-0.5 tw-rounded-xl",
796
+ 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]"
797
+ ),
798
+ children: option.label
799
+ }
800
+ )
801
+ }
802
+ );
803
+ });
764
804
  var Select = ({
765
805
  label,
766
806
  mandatory = false,
@@ -837,7 +877,7 @@ var Select = ({
837
877
  switch (size) {
838
878
  case "small":
839
879
  return {
840
- input: "tw-h-6 tw-px-3 tw-typography-caption1Bold !tw-rounded-lg",
880
+ input: "tw-h-6 tw-typography-caption1Bold !tw-rounded-lg",
841
881
  padding: "tw-px-2 tw-py-1",
842
882
  labelActive: "tw-top-0.5 tw-typography-caption2",
843
883
  labelInactive: "tw-top-1.5 tw-typography-caption3"
@@ -999,6 +1039,31 @@ var Select = ({
999
1039
  }
1000
1040
  return "";
1001
1041
  }, [selectedValue, validatedOptions, showDisplayValue, normalizeValue]);
1042
+ const displayValue = (0, import_react2.useMemo)(() => getDisplayValue(), [getDisplayValue]);
1043
+ const inputClasses = (0, import_react2.useMemo)(() => {
1044
+ return (0, import_clsx8.default)(
1045
+ "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",
1046
+ sizeClasses.input,
1047
+ sizeClasses.padding,
1048
+ variantClasses,
1049
+ {
1050
+ "tw-bg-white": valueSelected || displayValue || isFocused,
1051
+ "tw-bg-color-gray-5": !valueSelected || !displayValue,
1052
+ "!tw-bg-[#F8F7F6] tw-cursor-not-allowed tw-pointer-events-none": disabled
1053
+ },
1054
+ !label && "tw-flex tw-items-center",
1055
+ {
1056
+ "!tw-border-color-primary": isFocused && experience === "business"
1057
+ },
1058
+ {
1059
+ "!tw-border-[#804D7B]": isFocused && experience === "personal"
1060
+ },
1061
+ error ? "!tw-border-color-text-critical " : "tw-border-[#EBE3DD] hover:tw-border-[#C5B7AC]",
1062
+ "focus:tw-shadow-sm focus:tw-ring-offset-1",
1063
+ className,
1064
+ inputClassName
1065
+ );
1066
+ }, [sizeClasses, variantClasses, valueSelected, displayValue, isFocused, disabled, label, experience, error, className, inputClassName]);
1002
1067
  const filteredOptions = (0, import_react2.useMemo)(() => {
1003
1068
  var _a;
1004
1069
  if (!enableSearch) {
@@ -1093,7 +1158,7 @@ var Select = ({
1093
1158
  }, [highlightedIndex]);
1094
1159
  (0, import_react2.useEffect)(() => {
1095
1160
  optionRefs.current = [];
1096
- }, [filteredOptions]);
1161
+ }, [filteredOptions.length]);
1097
1162
  const handleMouseEnter = (0, import_react2.useCallback)(() => {
1098
1163
  if (hoverTimeoutRef.current) {
1099
1164
  clearTimeout(hoverTimeoutRef.current);
@@ -1130,12 +1195,23 @@ var Select = ({
1130
1195
  },
1131
1196
  [isOpen, handleInputInteraction]
1132
1197
  );
1133
- const InputWrapper = ({ children }) => {
1134
- if (disabled && disabledTooltip)
1135
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Tooltip_default, { title: disabledTooltip, children });
1136
- return children;
1137
- };
1138
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(InputWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1198
+ const handleChevronMouseDown = (0, import_react2.useCallback)(
1199
+ (e) => {
1200
+ if (isHovering && selectedValue && allowClear) {
1201
+ handleClear(e);
1202
+ } else {
1203
+ handleChevronClick(e);
1204
+ }
1205
+ },
1206
+ [isHovering, selectedValue, allowClear, handleClear, handleChevronClick]
1207
+ );
1208
+ const handleOptionClick = (0, import_react2.useCallback)((option) => {
1209
+ handleOptionSelect(option);
1210
+ }, [handleOptionSelect]);
1211
+ const handleOptionMouseEnter = (0, import_react2.useCallback)((index) => {
1212
+ setHighlightedIndex(index);
1213
+ }, []);
1214
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(InputWrapper, { disabled, disabledTooltip, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1139
1215
  "div",
1140
1216
  {
1141
1217
  style,
@@ -1159,35 +1235,11 @@ var Select = ({
1159
1235
  autoCorrect: "off",
1160
1236
  autoCapitalize: "off",
1161
1237
  spellCheck: "false",
1162
- value: isFocused && enableSearch ? searchTerm : getDisplayValue(),
1238
+ value: isFocused && enableSearch ? searchTerm : displayValue,
1163
1239
  onChange: enableSearch ? handleSearchChange : void 0,
1164
1240
  onClick: handleInputInteraction,
1165
1241
  onKeyDown: handleKeyDown,
1166
- className: (0, import_clsx8.default)(
1167
- "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",
1168
- sizeClasses.input,
1169
- sizeClasses.padding,
1170
- variantClasses,
1171
- {
1172
- "tw-bg-white": valueSelected || getDisplayValue() || isFocused,
1173
- "tw-bg-color-gray-5": !valueSelected || !getDisplayValue(),
1174
- "!tw-bg-[#F8F7F6] tw-cursor-not-allowed tw-pointer-events-none": disabled
1175
- },
1176
- // Conditional padding based on label presence
1177
- !label && "tw-flex tw-items-center",
1178
- {
1179
- "!tw-border-color-primary": isFocused && experience === "business"
1180
- },
1181
- {
1182
- "!tw-border-[#804D7B]": isFocused && experience === "personal"
1183
- },
1184
- error ? "!tw-border-color-text-critical " : "tw-border-[#EBE3DD] hover:tw-border-[#C5B7AC]",
1185
- // Add focus state styling
1186
- "focus:tw-shadow-sm focus:tw-ring-offset-1",
1187
- className,
1188
- inputClassName
1189
- // Put inputClassName last so it can override default classes
1190
- ),
1242
+ className: inputClasses,
1191
1243
  readOnly: !isFocused || !enableSearch
1192
1244
  }
1193
1245
  ),
@@ -1228,13 +1280,7 @@ var Select = ({
1228
1280
  // Only rotate chevron when open and not showing clear icon
1229
1281
  isOpen && !(isHovering && selectedValue && allowClear) && "-tw-rotate-180"
1230
1282
  ),
1231
- onMouseDown: (e) => {
1232
- if (isHovering && selectedValue && allowClear) {
1233
- handleClear(e);
1234
- } else {
1235
- handleChevronClick(e);
1236
- }
1237
- },
1283
+ onMouseDown: handleChevronMouseDown,
1238
1284
  children: disabled ? null : isHovering && selectedValue && allowClear ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1239
1285
  CrossV2,
1240
1286
  {
@@ -1265,75 +1311,32 @@ var Select = ({
1265
1311
  dropdownClassName
1266
1312
  ),
1267
1313
  ref: optionListRef,
1268
- children: filteredOptions.length > 0 ? filteredOptions.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1269
- "div",
1270
- {
1271
- ref: (el) => optionRefs.current[index] = el,
1272
- onClick: () => handleOptionSelect(option),
1273
- onMouseEnter: () => setHighlightedIndex(index),
1274
- className: (0, import_clsx8.default)(
1275
- "tw-transition-all tw-duration-150",
1276
- { "tw-typography-body2": size !== "small" },
1277
- { "tw-typography-caption1": size === "small" },
1278
- optionClassName
1279
- ),
1280
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1281
- "div",
1282
- {
1283
- className: (0, import_clsx8.default)(
1284
- "tw-px-4 tw-cursor-pointer tw-py-2 tw-mx-0.5 tw-rounded-xl",
1285
- normalizeValue(selectedValue) === normalizeValue(option.value) ? experience === "personal" ? "tw-bg-[#f1e8fa]" : "tw-bg-[#fff1e1]" : (
1286
- // Highlighted option styling (keyboard navigation)
1287
- index === highlightedIndex ? "tw-bg-[#f3f4f6] tw-text-gray-900" : (
1288
- // Default option styling
1289
- "tw-text-gray-900 hover:tw-bg-[#1118270a]"
1290
- )
1291
- )
1292
- ),
1293
- children: option.label
1294
- }
1295
- )
1296
- },
1297
- doubleCharSearch ? option.label : option.value
1298
- )) : /* @__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" })
1314
+ children: filteredOptions.length > 0 ? filteredOptions.map((option, index) => {
1315
+ const isSelected = normalizeValue(selectedValue) === normalizeValue(option.value);
1316
+ const isHighlighted = index === highlightedIndex;
1317
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref: (el) => optionRefs.current[index] = el, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1318
+ OptionItem,
1319
+ {
1320
+ option,
1321
+ index,
1322
+ isSelected,
1323
+ isHighlighted,
1324
+ experience,
1325
+ size,
1326
+ optionClassName,
1327
+ onSelectHandler: handleOptionClick,
1328
+ onMouseEnterHandler: handleOptionMouseEnter
1329
+ }
1330
+ ) }, doubleCharSearch ? option.label : option.value);
1331
+ }) : /* @__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" })
1299
1332
  }
1300
1333
  )
1301
1334
  ]
1302
1335
  }
1303
1336
  ) });
1304
1337
  };
1305
- var arePropsEqual = (prevProps, nextProps) => {
1306
- var _a, _b;
1307
- const criticalProps = [
1308
- "value",
1309
- "valueSelected",
1310
- "options",
1311
- "error",
1312
- "disabled",
1313
- "label",
1314
- "mandatory"
1315
- ];
1316
- for (const prop of criticalProps) {
1317
- if (prevProps[prop] !== nextProps[prop]) {
1318
- return false;
1319
- }
1320
- }
1321
- if (((_a = prevProps.options) == null ? void 0 : _a.length) !== ((_b = nextProps.options) == null ? void 0 : _b.length)) {
1322
- return false;
1323
- }
1324
- if (prevProps.options && nextProps.options) {
1325
- for (let i = 0; i < prevProps.options.length; i++) {
1326
- const prevOpt = prevProps.options[i];
1327
- const nextOpt = nextProps.options[i];
1328
- 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)) {
1329
- return false;
1330
- }
1331
- }
1332
- }
1333
- return true;
1334
- };
1335
1338
  Select.displayName = "Select";
1336
- var Select_default = (0, import_react2.memo)(Select, arePropsEqual);
1339
+ var Select_default = Select;
1337
1340
 
1338
1341
  // src/atom/RangePicker/RangePicker.tsx
1339
1342
  var import_jsx_runtime15 = require("react/jsx-runtime");
package/dist/index.mjs CHANGED
@@ -1,40 +1,40 @@
1
1
  import {
2
2
  RangePicker_default
3
- } from "./chunk-Y3BIY4DW.mjs";
4
- import {
5
- Select_default
6
- } from "./chunk-ZGFE3OPJ.mjs";
3
+ } from "./chunk-IIJUGDEJ.mjs";
4
+ import "./chunk-ZTRM4HZJ.mjs";
7
5
  import {
8
- Slider_default
9
- } from "./chunk-D3N7VFER.mjs";
6
+ Modal_default
7
+ } from "./chunk-UQJ3BDM4.mjs";
10
8
  import {
11
9
  Switch_default
12
10
  } from "./chunk-MNARBWAJ.mjs";
13
- import {
14
- Tooltip_default
15
- } from "./chunk-MLCMZRUC.mjs";
16
11
  import {
17
12
  Tag_default
18
13
  } from "./chunk-4VZB2KR2.mjs";
19
14
  import {
20
15
  Avatar_default
21
16
  } from "./chunk-IWO2Y5QX.mjs";
17
+ import {
18
+ Button_default
19
+ } from "./chunk-AF2RKLH6.mjs";
22
20
  import {
23
21
  Checkbox_default
24
22
  } from "./chunk-UQZNUEZE.mjs";
25
23
  import {
26
- Modal_default
27
- } from "./chunk-UQJ3BDM4.mjs";
24
+ Radio_default
25
+ } from "./chunk-2EBPXGRY.mjs";
28
26
  import {
29
- Button_default
30
- } from "./chunk-AF2RKLH6.mjs";
27
+ Slider_default
28
+ } from "./chunk-D3N7VFER.mjs";
29
+ import {
30
+ Select_default
31
+ } from "./chunk-GU5F7Z7I.mjs";
32
+ import {
33
+ Tooltip_default
34
+ } from "./chunk-MLCMZRUC.mjs";
31
35
  import {
32
36
  LoadingSpinner_default
33
37
  } from "./chunk-QKTMWS4J.mjs";
34
- import {
35
- Radio_default
36
- } from "./chunk-2EBPXGRY.mjs";
37
- import "./chunk-ZTRM4HZJ.mjs";
38
38
  import "./chunk-FWCSY2DS.mjs";
39
39
  export {
40
40
  Avatar_default as Avatar,