@itilite/lumina-ui 0.0.323 → 1.0.0-alpha

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 (273) hide show
  1. package/README.md +43 -10
  2. package/dist/AdvancedDateRangePicker-CN9WN0rH.d.mts +56 -0
  3. package/dist/AdvancedDateRangePicker-CN9WN0rH.d.ts +56 -0
  4. package/dist/AdvancedDateRangePicker-CzN1HGsC.d.mts +57 -0
  5. package/dist/AdvancedDateRangePicker-CzN1HGsC.d.ts +57 -0
  6. package/dist/AdvancedDateRangePicker-DAPxgRl3.d.mts +54 -0
  7. package/dist/AdvancedDateRangePicker-DAPxgRl3.d.ts +54 -0
  8. package/dist/AdvancedDateRangePicker-DW94285G.d.mts +56 -0
  9. package/dist/AdvancedDateRangePicker-DW94285G.d.ts +56 -0
  10. package/dist/AdvancedDateRangePicker-Eh6n4ne0.d.mts +57 -0
  11. package/dist/AdvancedDateRangePicker-Eh6n4ne0.d.ts +57 -0
  12. package/dist/Avatar-DX2JwvAs.d.mts +17 -0
  13. package/dist/Avatar-DX2JwvAs.d.ts +17 -0
  14. package/dist/Table-BA0D3p1m.d.mts +78 -0
  15. package/dist/Table-BA0D3p1m.d.ts +78 -0
  16. package/dist/Table-BLZ6c46U.d.mts +77 -0
  17. package/dist/Table-BLZ6c46U.d.ts +77 -0
  18. package/dist/Table-BMqYnFi4.d.mts +25 -0
  19. package/dist/Table-BMqYnFi4.d.ts +25 -0
  20. package/dist/Table-BOq-_9Nr.d.mts +121 -0
  21. package/dist/Table-BOq-_9Nr.d.ts +121 -0
  22. package/dist/Table-BRcthrYV.d.mts +98 -0
  23. package/dist/Table-BRcthrYV.d.ts +98 -0
  24. package/dist/Table-BWlFCfBG.d.mts +106 -0
  25. package/dist/Table-BWlFCfBG.d.ts +106 -0
  26. package/dist/Table-CHFmNrme.d.mts +77 -0
  27. package/dist/Table-CHFmNrme.d.ts +77 -0
  28. package/dist/Table-CX6UwQiD.d.mts +116 -0
  29. package/dist/Table-CX6UwQiD.d.ts +116 -0
  30. package/dist/Table-Chud2XSq.d.mts +99 -0
  31. package/dist/Table-Chud2XSq.d.ts +99 -0
  32. package/dist/Table-D5QRe_j3.d.mts +121 -0
  33. package/dist/Table-D5QRe_j3.d.ts +121 -0
  34. package/dist/Table-DAgFGahx.d.mts +39 -0
  35. package/dist/Table-DAgFGahx.d.ts +39 -0
  36. package/dist/Table-DWniK7At.d.mts +87 -0
  37. package/dist/Table-DWniK7At.d.ts +87 -0
  38. package/dist/Table-PyFlnUDu.d.mts +47 -0
  39. package/dist/Table-PyFlnUDu.d.ts +47 -0
  40. package/dist/Table-wqyg13Y9.d.mts +77 -0
  41. package/dist/Table-wqyg13Y9.d.ts +77 -0
  42. package/dist/Tag-l7I5oeyk.d.mts +13 -0
  43. package/dist/Tag-l7I5oeyk.d.ts +13 -0
  44. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.mts +2 -0
  45. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.ts +2 -0
  46. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.js +791 -0
  47. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +11 -0
  48. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.mts +18 -0
  49. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.ts +18 -0
  50. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.js +370 -0
  51. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.mjs +8 -0
  52. package/dist/atom/Avatar/Avatar.d.mts +9 -0
  53. package/dist/atom/Avatar/Avatar.d.ts +9 -0
  54. package/dist/atom/Avatar/Avatar.js +123 -0
  55. package/dist/atom/Avatar/Avatar.mjs +9 -0
  56. package/dist/{Button.js → atom/Button/Button.js} +4 -4
  57. package/dist/{Button.mjs → atom/Button/Button.mjs} +2 -2
  58. package/dist/{Checkbox.js → atom/Checkbox/Checkbox.js} +4 -4
  59. package/dist/{Checkbox.mjs → atom/Checkbox/Checkbox.mjs} +2 -2
  60. package/dist/atom/LoadingSpinner/LoadingSpinner.d.mts +19 -0
  61. package/dist/atom/LoadingSpinner/LoadingSpinner.d.ts +19 -0
  62. package/dist/atom/LoadingSpinner/LoadingSpinner.js +90 -0
  63. package/dist/atom/LoadingSpinner/LoadingSpinner.mjs +9 -0
  64. package/dist/atom/Modal/Modal.d.mts +25 -0
  65. package/dist/atom/Modal/Modal.d.ts +25 -0
  66. package/dist/atom/Modal/Modal.js +267 -0
  67. package/dist/atom/Modal/Modal.mjs +10 -0
  68. package/dist/atom/Radio/Radio.d.mts +17 -0
  69. package/dist/atom/Radio/Radio.d.ts +17 -0
  70. package/dist/atom/Radio/Radio.js +122 -0
  71. package/dist/atom/Radio/Radio.mjs +9 -0
  72. package/dist/atom/RangePicker/Chevron.d.mts +13 -0
  73. package/dist/atom/RangePicker/Chevron.d.ts +13 -0
  74. package/dist/atom/RangePicker/Chevron.js +110 -0
  75. package/dist/atom/RangePicker/Chevron.mjs +7 -0
  76. package/dist/atom/RangePicker/RangePicker.d.mts +26 -0
  77. package/dist/atom/RangePicker/RangePicker.d.ts +26 -0
  78. package/dist/atom/RangePicker/RangePicker.js +1465 -0
  79. package/dist/atom/RangePicker/RangePicker.mjs +13 -0
  80. package/dist/atom/Select/Select.d.mts +40 -0
  81. package/dist/atom/Select/Select.d.ts +40 -0
  82. package/dist/atom/Select/Select.js +805 -0
  83. package/dist/atom/Select/Select.mjs +11 -0
  84. package/dist/atom/Slider/Slider.d.mts +34 -0
  85. package/dist/atom/Slider/Slider.d.ts +34 -0
  86. package/dist/atom/Slider/Slider.js +107 -0
  87. package/dist/atom/Slider/Slider.mjs +9 -0
  88. package/dist/atom/Switch/Switch.d.mts +13 -0
  89. package/dist/atom/Switch/Switch.d.ts +13 -0
  90. package/dist/atom/Switch/Switch.js +102 -0
  91. package/dist/atom/Switch/Switch.mjs +9 -0
  92. package/dist/atom/Table/LuminaPagination.d.mts +7 -0
  93. package/dist/atom/Table/LuminaPagination.d.ts +7 -0
  94. package/dist/atom/Table/LuminaPagination.js +153 -0
  95. package/dist/atom/Table/LuminaPagination.mjs +9 -0
  96. package/dist/atom/Table/Table.d.mts +3 -0
  97. package/dist/atom/Table/Table.d.ts +3 -0
  98. package/dist/atom/Table/Table.js +306 -0
  99. package/dist/atom/Table/Table.mjs +9 -0
  100. package/dist/atom/Table/TableAccordion.d.mts +9 -0
  101. package/dist/atom/Table/TableAccordion.d.ts +9 -0
  102. package/dist/atom/Table/TableAccordion.js +91 -0
  103. package/dist/atom/Table/TableAccordion.mjs +10 -0
  104. package/dist/atom/Table/TableColumnHeader.d.mts +7 -0
  105. package/dist/atom/Table/TableColumnHeader.d.ts +7 -0
  106. package/dist/atom/Table/TableColumnHeader.js +151 -0
  107. package/dist/atom/Table/TableColumnHeader.mjs +10 -0
  108. package/dist/atom/Table/TableToolbar.d.mts +9 -0
  109. package/dist/atom/Table/TableToolbar.d.ts +9 -0
  110. package/dist/atom/Table/TableToolbar.js +114 -0
  111. package/dist/atom/Table/TableToolbar.mjs +10 -0
  112. package/dist/atom/Table/__tests__/Table.test.d.mts +2 -0
  113. package/dist/atom/Table/__tests__/Table.test.d.ts +2 -0
  114. package/dist/atom/Table/__tests__/Table.test.js +61133 -0
  115. package/dist/atom/Table/__tests__/Table.test.mjs +59522 -0
  116. package/dist/atom/TableAccordion/index.d.mts +17 -0
  117. package/dist/atom/TableAccordion/index.d.ts +17 -0
  118. package/dist/atom/TableAccordion/index.js +91 -0
  119. package/dist/atom/TableAccordion/index.mjs +9 -0
  120. package/dist/atom/TableToolbar/index.d.mts +23 -0
  121. package/dist/atom/TableToolbar/index.d.ts +23 -0
  122. package/dist/atom/TableToolbar/index.js +114 -0
  123. package/dist/atom/TableToolbar/index.mjs +9 -0
  124. package/dist/atom/Tag/Tag.d.mts +6 -0
  125. package/dist/atom/Tag/Tag.d.ts +6 -0
  126. package/dist/atom/Tag/Tag.js +108 -0
  127. package/dist/atom/Tag/Tag.mjs +9 -0
  128. package/dist/atom/Tooltip/Tooltip.d.mts +12 -0
  129. package/dist/atom/Tooltip/Tooltip.d.ts +12 -0
  130. package/dist/atom/Tooltip/Tooltip.js +97 -0
  131. package/dist/atom/Tooltip/Tooltip.mjs +9 -0
  132. package/dist/chunk-2EBPXGRY.mjs +65 -0
  133. package/dist/chunk-2PIFDGVK.mjs +420 -0
  134. package/dist/chunk-35KDS27M.mjs +618 -0
  135. package/dist/chunk-3S4X3YO2.mjs +64 -0
  136. package/dist/chunk-3XUHGVYA.mjs +77 -0
  137. package/dist/chunk-4JX54OKI.mjs +627 -0
  138. package/dist/chunk-4VZB2KR2.mjs +51 -0
  139. package/dist/chunk-5HF6Y37C.mjs +642 -0
  140. package/dist/chunk-5OGQ4YIR.mjs +238 -0
  141. package/dist/chunk-6FCSXN7R.mjs +388 -0
  142. package/dist/chunk-7W72LPSU.mjs +66 -0
  143. package/dist/chunk-A66QDQHK.mjs +627 -0
  144. package/dist/chunk-ABLIL47F.mjs +618 -0
  145. package/dist/chunk-AEPDEUGY.mjs +627 -0
  146. package/dist/chunk-AF2RKLH6.mjs +77 -0
  147. package/dist/chunk-AFLEGUF3.mjs +232 -0
  148. package/dist/chunk-APCEITHQ.mjs +232 -0
  149. package/dist/chunk-AVQBFGBT.mjs +141 -0
  150. package/dist/chunk-B5BOBELW.mjs +213 -0
  151. package/dist/chunk-BQ4PVLJ4.mjs +262 -0
  152. package/dist/chunk-D3N7VFER.mjs +73 -0
  153. package/dist/{chunk-OMYHSSPQ.mjs → chunk-DBNLBCQK.mjs} +5 -5
  154. package/dist/chunk-DLLT6V65.mjs +141 -0
  155. package/dist/chunk-DOQQRYTS.mjs +73 -0
  156. package/dist/chunk-DSVR2DVF.mjs +660 -0
  157. package/dist/chunk-DXUPULDI.mjs +424 -0
  158. package/dist/chunk-E465D6OH.mjs +644 -0
  159. package/dist/chunk-E4FCLHYA.mjs +678 -0
  160. package/dist/chunk-ENQN5BAN.mjs +225 -0
  161. package/dist/chunk-F6VMSH4N.mjs +79 -0
  162. package/dist/chunk-FKGGN3FA.mjs +412 -0
  163. package/dist/chunk-GFTO2N3Q.mjs +432 -0
  164. package/dist/chunk-GM6H6RPJ.mjs +232 -0
  165. package/dist/chunk-GU5F7Z7I.mjs +681 -0
  166. package/dist/chunk-HF3VJBMY.mjs +244 -0
  167. package/dist/{chunk-ME35H7QC.mjs → chunk-HISCHZ5H.mjs} +4 -4
  168. package/dist/chunk-HWQBE6PT.mjs +99 -0
  169. package/dist/chunk-HXM657YW.mjs +115 -0
  170. package/dist/chunk-I5VHKSQR.mjs +64 -0
  171. package/dist/chunk-ICSZZNTY.mjs +384 -0
  172. package/dist/chunk-IWO2Y5QX.mjs +89 -0
  173. package/dist/chunk-IZGLD7U3.mjs +667 -0
  174. package/dist/chunk-J7X2PZG6.mjs +232 -0
  175. package/dist/chunk-JUXBLRMQ.mjs +50 -0
  176. package/dist/chunk-JXFSGADI.mjs +678 -0
  177. package/dist/chunk-KGKRSR6D.mjs +388 -0
  178. package/dist/chunk-KQKNFGWZ.mjs +388 -0
  179. package/dist/chunk-LCH4DXJY.mjs +92 -0
  180. package/dist/chunk-LCXU3K57.mjs +232 -0
  181. package/dist/chunk-LRN4XOIR.mjs +71 -0
  182. package/dist/chunk-LROMXY35.mjs +116 -0
  183. package/dist/chunk-LUNPHYAR.mjs +681 -0
  184. package/dist/chunk-LVOTEPLC.mjs +64 -0
  185. package/dist/chunk-M2ZM3X5Y.mjs +56 -0
  186. package/dist/chunk-M4MIYHAV.mjs +43 -0
  187. package/dist/chunk-M7F7DOC4.mjs +41 -0
  188. package/dist/chunk-MHWFVML4.mjs +115 -0
  189. package/dist/chunk-MLCMZRUC.mjs +50 -0
  190. package/dist/chunk-MNARBWAJ.mjs +47 -0
  191. package/dist/chunk-MPTVYTYS.mjs +0 -0
  192. package/dist/chunk-MQFW3LZR.mjs +111 -0
  193. package/dist/chunk-N2WTNCQU.mjs +66 -0
  194. package/dist/chunk-N355RJGH.mjs +141 -0
  195. package/dist/chunk-N3YFQDW7.mjs +77 -0
  196. package/dist/chunk-N4DPPZVJ.mjs +269 -0
  197. package/dist/chunk-NGCBOOIE.mjs +225 -0
  198. package/dist/chunk-NWQQYJSP.mjs +688 -0
  199. package/dist/chunk-NYQV556V.mjs +667 -0
  200. package/dist/chunk-O5C3355V.mjs +246 -0
  201. package/dist/chunk-OCP43S7U.mjs +241 -0
  202. package/dist/chunk-OHLFRULE.mjs +432 -0
  203. package/dist/chunk-PLO46EKV.mjs +65 -0
  204. package/dist/chunk-PQ3B2FEB.mjs +249 -0
  205. package/dist/chunk-PSBEYGD4.mjs +618 -0
  206. package/dist/chunk-PWIBJI6Z.mjs +115 -0
  207. package/dist/chunk-Q5KPXEH5.mjs +223 -0
  208. package/dist/chunk-QC34HHAY.mjs +57 -0
  209. package/dist/chunk-QKTMWS4J.mjs +43 -0
  210. package/dist/chunk-QVWV36BK.mjs +73 -0
  211. package/dist/chunk-QWK3MYDM.mjs +64 -0
  212. package/dist/chunk-RE44YAMD.mjs +47 -0
  213. package/dist/chunk-RH6DAYBU.mjs +369 -0
  214. package/dist/chunk-RSSEJENT.mjs +269 -0
  215. package/dist/chunk-SJBS5QCJ.mjs +225 -0
  216. package/dist/chunk-SWRFCTJW.mjs +77 -0
  217. package/dist/chunk-T4XNCAIB.mjs +231 -0
  218. package/dist/chunk-TCX5IFQ4.mjs +627 -0
  219. package/dist/chunk-TSAUBT2F.mjs +74 -0
  220. package/dist/chunk-U7Q7ILSE.mjs +690 -0
  221. package/dist/chunk-UHTUJJH7.mjs +112 -0
  222. package/dist/chunk-UOHYCMUS.mjs +53 -0
  223. package/dist/chunk-UQJ3BDM4.mjs +141 -0
  224. package/dist/chunk-UQZBL3F7.mjs +0 -0
  225. package/dist/chunk-UQZNUEZE.mjs +64 -0
  226. package/dist/chunk-URGYNKJM.mjs +229 -0
  227. package/dist/chunk-UTMZY37A.mjs +141 -0
  228. package/dist/chunk-UUEPD2FH.mjs +141 -0
  229. package/dist/chunk-V3CHJHUX.mjs +424 -0
  230. package/dist/chunk-VQOUJQIF.mjs +249 -0
  231. package/dist/chunk-VY3QH43W.mjs +6 -0
  232. package/dist/chunk-W2N3AWY6.mjs +80 -0
  233. package/dist/chunk-WUVS6S7N.mjs +119 -0
  234. package/dist/chunk-WZS2K7X3.mjs +688 -0
  235. package/dist/chunk-X76GNSBB.mjs +87 -0
  236. package/dist/chunk-XG7CZXBW.mjs +244 -0
  237. package/dist/chunk-XXKIBYXD.mjs +109 -0
  238. package/dist/chunk-XXTUVMAY.mjs +51 -0
  239. package/dist/chunk-Y3BIY4DW.mjs +618 -0
  240. package/dist/chunk-Y7FP6ZMW.mjs +225 -0
  241. package/dist/chunk-YELLXCMY.mjs +265 -0
  242. package/dist/chunk-YQEEM26W.mjs +232 -0
  243. package/dist/chunk-ZGFE3OPJ.mjs +678 -0
  244. package/dist/chunk-ZMJ3KDDY.mjs +618 -0
  245. package/dist/chunk-ZTRM4HZJ.mjs +53 -0
  246. package/dist/chunk-ZYPWQ53U.mjs +6 -0
  247. package/dist/dist-U2IPN4FB.mjs +567 -0
  248. package/dist/index.d.mts +20 -2
  249. package/dist/index.d.ts +20 -2
  250. package/dist/index.js +2820 -13
  251. package/dist/index.mjs +59 -5
  252. package/dist/magic-string.es-XOWQCRDO.mjs +1311 -0
  253. package/dist/molecules/UserProfile/UserProfile.d.mts +23 -0
  254. package/dist/molecules/UserProfile/UserProfile.d.ts +23 -0
  255. package/dist/molecules/UserProfile/UserProfile.js +243 -0
  256. package/dist/molecules/UserProfile/UserProfile.mjs +11 -0
  257. package/dist/styles.css +1802 -1067
  258. package/dist/types-CA0Wby2L.d.mts +67 -0
  259. package/dist/types-CA0Wby2L.d.ts +67 -0
  260. package/dist/types-CncMmuJM.d.mts +44 -0
  261. package/dist/types-CncMmuJM.d.ts +44 -0
  262. package/dist/types-D4MD2w3_.d.mts +9 -0
  263. package/dist/types-D4MD2w3_.d.ts +9 -0
  264. package/dist/types-D4fdeMWQ.d.mts +62 -0
  265. package/dist/types-D4fdeMWQ.d.ts +62 -0
  266. package/dist/types-mhQmqhsR.d.mts +10 -0
  267. package/dist/types-mhQmqhsR.d.ts +10 -0
  268. package/package.json +10 -18
  269. /package/dist/{Button.d.mts → atom/Button/Button.d.mts} +0 -0
  270. /package/dist/{Button.d.ts → atom/Button/Button.d.ts} +0 -0
  271. /package/dist/{Checkbox.d.mts → atom/Checkbox/Checkbox.d.mts} +0 -0
  272. /package/dist/{Checkbox.d.ts → atom/Checkbox/Checkbox.d.ts} +0 -0
  273. /package/dist/{chunk-FUJQIYOF.mjs → chunk-FWCSY2DS.mjs} +0 -0
@@ -0,0 +1,681 @@
1
+ import {
2
+ Tooltip_default
3
+ } from "./chunk-MLCMZRUC.mjs";
4
+ import {
5
+ LoadingSpinner_default
6
+ } from "./chunk-QKTMWS4J.mjs";
7
+ import {
8
+ __objRest,
9
+ __spreadProps,
10
+ __spreadValues
11
+ } from "./chunk-FWCSY2DS.mjs";
12
+
13
+ // src/atom/Select/Select.tsx
14
+ import { useCallback, useEffect, useMemo, useRef, useState, memo as memo3 } from "react";
15
+ import clsx from "clsx";
16
+
17
+ // src/icons/Chevron.tsx
18
+ import * as React from "react";
19
+ import { jsx } from "react/jsx-runtime";
20
+ var Chevron = React.memo(
21
+ (_a) => {
22
+ var _b = _a, { size = 16, color = "#6b7280", className } = _b, rest = __objRest(_b, ["size", "color", "className"]);
23
+ return /* @__PURE__ */ jsx(
24
+ "svg",
25
+ __spreadProps(__spreadValues({
26
+ xmlns: "http://www.w3.org/2000/svg",
27
+ width: size,
28
+ height: size,
29
+ fill: "none",
30
+ viewBox: "0 0 16 16",
31
+ className
32
+ }, rest), {
33
+ children: /* @__PURE__ */ jsx(
34
+ "path",
35
+ {
36
+ fill: color,
37
+ d: "M11.78 6.22a.75.75 0 00-1.06 0L8 8.94 5.28 6.22a.75.75 0 00-1.06 1.06l3.25 3.25a.75.75 0 001.06 0l3.25-3.25a.75.75 0 000-1.06z"
38
+ }
39
+ )
40
+ })
41
+ );
42
+ }
43
+ );
44
+ Chevron.displayName = "Chevron";
45
+
46
+ // src/icons/CrossV2.tsx
47
+ import * as React2 from "react";
48
+ import { jsx as jsx2 } from "react/jsx-runtime";
49
+ var CrossV2 = React2.memo(
50
+ (_a) => {
51
+ var _b = _a, { size = 16, color = "#111827", className } = _b, rest = __objRest(_b, ["size", "color", "className"]);
52
+ return /* @__PURE__ */ jsx2(
53
+ "svg",
54
+ __spreadProps(__spreadValues({
55
+ xmlns: "http://www.w3.org/2000/svg",
56
+ width: size,
57
+ height: size,
58
+ fill: "none",
59
+ viewBox: "0 0 20 20"
60
+ }, rest), {
61
+ children: /* @__PURE__ */ jsx2(
62
+ "path",
63
+ {
64
+ fill: color,
65
+ d: "M4.411 4.41a.833.833 0 0 1 1.179 0L10 8.822l4.411-4.41a.833.833 0 1 1 1.179 1.178L11.179 10l4.41 4.41a.833.833 0 0 1-1.178 1.18l-4.41-4.411-4.411 4.41a.833.833 0 1 1-1.179-1.178L8.821 10l-4.41-4.41a.833.833 0 0 1 0-1.18"
66
+ }
67
+ )
68
+ })
69
+ );
70
+ }
71
+ );
72
+ CrossV2.displayName = "CrossV2";
73
+
74
+ // src/icons/Lock.tsx
75
+ import React3 from "react";
76
+ import { jsx as jsx3 } from "react/jsx-runtime";
77
+ var Lock = React3.memo((_a) => {
78
+ var _b = _a, { size = 16, color = "#000" } = _b, rest = __objRest(_b, ["size", "color"]);
79
+ return /* @__PURE__ */ jsx3(
80
+ "svg",
81
+ __spreadProps(__spreadValues({
82
+ xmlns: "http://www.w3.org/2000/svg",
83
+ width: size,
84
+ height: size,
85
+ fill: "none",
86
+ viewBox: "0 0 16 16"
87
+ }, rest), {
88
+ children: /* @__PURE__ */ jsx3(
89
+ "path",
90
+ {
91
+ fill: color,
92
+ d: "M9 9a1 1 0 11-2 0 1 1 0 012 0zM5 4h-.5A2.5 2.5 0 002 6.5v5A2.5 2.5 0 004.5 14h7a2.5 2.5 0 002.5-2.5v-5A2.5 2.5 0 0011.5 4H11v-.5a3 3 0 00-6 0V4zm1-.5a2 2 0 114 0V4H6v-.5zM11.5 5A1.5 1.5 0 0113 6.5v5a1.5 1.5 0 01-1.5 1.5h-7A1.5 1.5 0 013 11.5v-5A1.5 1.5 0 014.5 5h7z"
93
+ }
94
+ )
95
+ })
96
+ );
97
+ });
98
+
99
+ // src/atom/Select/Select.tsx
100
+ import { Fragment, jsx as jsx4, jsxs } from "react/jsx-runtime";
101
+ var InputWrapper = memo3(({ children, disabled, disabledTooltip }) => {
102
+ if (disabled && disabledTooltip)
103
+ return /* @__PURE__ */ jsx4(Tooltip_default, { title: disabledTooltip, children });
104
+ return /* @__PURE__ */ jsx4(Fragment, { children });
105
+ });
106
+ var OptionItem = memo3(({
107
+ option,
108
+ index,
109
+ isSelected,
110
+ isHighlighted,
111
+ experience,
112
+ size,
113
+ optionClassName,
114
+ onSelectHandler,
115
+ onMouseEnterHandler
116
+ }) => {
117
+ return /* @__PURE__ */ jsx4(
118
+ "div",
119
+ {
120
+ onClick: () => onSelectHandler(option),
121
+ onMouseEnter: () => onMouseEnterHandler(index),
122
+ className: clsx(
123
+ "tw-transition-all tw-duration-150",
124
+ { "tw-typography-body2": size !== "small" },
125
+ { "tw-typography-caption1": size === "small" },
126
+ optionClassName
127
+ ),
128
+ children: /* @__PURE__ */ jsx4(
129
+ "div",
130
+ {
131
+ className: clsx(
132
+ "tw-px-4 tw-cursor-pointer tw-py-2 tw-mx-0.5 tw-rounded-xl",
133
+ 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]"
134
+ ),
135
+ children: option.label
136
+ }
137
+ )
138
+ }
139
+ );
140
+ });
141
+ var Select = ({
142
+ label,
143
+ mandatory = false,
144
+ error = false,
145
+ options = [],
146
+ valueSelected = "",
147
+ // Keep for backward compatibility
148
+ value: _valueProp,
149
+ // Rename to avoid potential conflicts with native value attribute
150
+ onChange,
151
+ onSearch,
152
+ isLoading = false,
153
+ disabled = false,
154
+ disabledTooltip = "",
155
+ className = "",
156
+ dropdownClassName = "",
157
+ optionClassName = "",
158
+ style = {},
159
+ showDisplayValue = false,
160
+ // New prop to show displayValue instead of label
161
+ allowClear = true,
162
+ enableSearch = true,
163
+ doubleCharSearch = false,
164
+ id,
165
+ name,
166
+ tabIndex,
167
+ // Add tabIndex prop
168
+ // Additional styling props
169
+ size = "default",
170
+ // 'small', 'default', 'large'
171
+ variant = "default",
172
+ // 'default', 'filled', 'outlined'
173
+ wrapperClassName = "",
174
+ inputClassName = "",
175
+ // Custom class for input element specifically
176
+ labelClassName = "",
177
+ // Custom class for label element specifically
178
+ height = "tw-h-12",
179
+ // Custom height
180
+ experience = "business"
181
+ }) => {
182
+ const normalizeValue = useCallback(
183
+ (val) => {
184
+ if (val === null || val === void 0) return "";
185
+ return String(val);
186
+ },
187
+ []
188
+ );
189
+ const validatedOptions = useMemo(() => {
190
+ if (!Array.isArray(options)) return [];
191
+ return options.filter(
192
+ (opt) => opt && typeof opt === "object" && opt.value !== void 0 && opt.value !== null && opt.label !== void 0
193
+ );
194
+ }, [options]);
195
+ const [isOpen, setIsOpen] = useState(false);
196
+ const [isFocused, setIsFocused] = useState(false);
197
+ const [searchTerm, setSearchTerm] = useState("");
198
+ const [isHovering, setIsHovering] = useState(false);
199
+ const [highlightedIndex, setHighlightedIndex] = useState(-1);
200
+ const [selectedValue, setSelectedValue] = useState(() => {
201
+ const initialValue = valueSelected;
202
+ if (initialValue === null || initialValue === void 0) return "";
203
+ return String(initialValue);
204
+ });
205
+ const inputRef = useRef(null);
206
+ const inputValueRef = useRef("");
207
+ const dropdownRef = useRef(null);
208
+ const optionRefs = useRef([]);
209
+ const optionListRef = useRef(null);
210
+ const blurTimeoutRef = useRef(null);
211
+ const hoverTimeoutRef = useRef(null);
212
+ const isActive = isFocused || Boolean(selectedValue) || Boolean(valueSelected) || Boolean(searchTerm);
213
+ const sizeClasses = useMemo(() => {
214
+ switch (size) {
215
+ case "small":
216
+ return {
217
+ input: "tw-h-6 tw-typography-caption1Bold !tw-rounded-lg",
218
+ padding: "tw-px-2 tw-py-1",
219
+ labelActive: "tw-top-0.5 tw-typography-caption2",
220
+ labelInactive: "tw-top-1.5 tw-typography-caption3"
221
+ };
222
+ case "medium":
223
+ return {
224
+ input: "tw-h-10 tw-px-4 tw-typography-body2",
225
+ padding: label ? "tw-pt-4 tw-pb-1" : "tw-py-2",
226
+ labelActive: "tw-top-1 tw-typography-caption3",
227
+ labelInactive: "tw-top-2.5 tw-typography-body2"
228
+ };
229
+ case "large":
230
+ return {
231
+ input: "tw-h-16 tw-px-5 tw-typography-bodyLarge",
232
+ padding: label ? "tw-pt-8 tw-pb-4" : "tw-py-5",
233
+ labelActive: "tw-top-1 tw-typography-caption2",
234
+ labelInactive: "tw-top-5 tw-typography-body1"
235
+ };
236
+ default:
237
+ return {
238
+ input: height + " tw-px-4 tw-typography-bodyLarge",
239
+ padding: label ? "tw-pt-6 tw-pb-3" : "tw-py-3",
240
+ labelActive: "tw-top-1 tw-typography-caption3",
241
+ labelInactive: "tw-top-3.5 tw-typography-body2"
242
+ };
243
+ }
244
+ }, [size, label, height]);
245
+ const variantClasses = useMemo(() => {
246
+ switch (variant) {
247
+ case "filled":
248
+ return "tw-bg-gray-50 tw-border-transparent";
249
+ case "outlined":
250
+ return "tw-bg-transparent tw-border-2";
251
+ default:
252
+ return " tw-border";
253
+ }
254
+ }, [variant]);
255
+ const handleBlur = useCallback(() => {
256
+ blurTimeoutRef.current = setTimeout(() => {
257
+ setIsOpen(false);
258
+ setSearchTerm("");
259
+ setHighlightedIndex(-1);
260
+ blurTimeoutRef.current = null;
261
+ setIsFocused(false);
262
+ }, 150);
263
+ }, []);
264
+ const handleSearchChange = useCallback(
265
+ (e) => {
266
+ var _a;
267
+ const searchValue = doubleCharSearch ? e.target.value.slice(0, 2) || "" : e.target.value;
268
+ if (doubleCharSearch) {
269
+ setSearchTerm(searchValue);
270
+ } else {
271
+ setSearchTerm(searchValue);
272
+ }
273
+ setIsOpen(true);
274
+ setHighlightedIndex(-1);
275
+ if (onSearch && typeof onSearch === "function") {
276
+ onSearch(searchValue);
277
+ }
278
+ (_a = optionListRef == null ? void 0 : optionListRef.current) == null ? void 0 : _a.scrollTo({
279
+ top: 0,
280
+ behavior: "smooth"
281
+ });
282
+ },
283
+ [doubleCharSearch, onSearch]
284
+ );
285
+ const handleOptionSelect = useCallback(
286
+ (option) => {
287
+ var _a;
288
+ if (blurTimeoutRef.current) {
289
+ clearTimeout(blurTimeoutRef.current);
290
+ blurTimeoutRef.current = null;
291
+ }
292
+ inputValueRef.current = option.label;
293
+ const normalizedValue = normalizeValue(option.value);
294
+ setSelectedValue(normalizedValue);
295
+ setSearchTerm("");
296
+ setIsOpen(false);
297
+ if (enableSearch) {
298
+ setIsFocused(false);
299
+ }
300
+ setIsHovering(false);
301
+ if (onChange) onChange(option.value);
302
+ if (enableSearch) (_a = inputRef.current) == null ? void 0 : _a.blur();
303
+ },
304
+ [normalizeValue, onChange, enableSearch]
305
+ );
306
+ const handleClear = useCallback(
307
+ (e) => {
308
+ var _a;
309
+ inputValueRef.current = "";
310
+ e.stopPropagation();
311
+ e.preventDefault();
312
+ setSelectedValue("");
313
+ setSearchTerm("");
314
+ if (enableSearch) {
315
+ setIsOpen(true);
316
+ setIsFocused(true);
317
+ (_a = inputRef.current) == null ? void 0 : _a.focus();
318
+ } else {
319
+ setIsOpen(false);
320
+ setIsFocused(false);
321
+ }
322
+ if (onChange) onChange(null);
323
+ },
324
+ [onChange, enableSearch]
325
+ );
326
+ useEffect(() => {
327
+ if (!validatedOptions.length) {
328
+ setSelectedValue("");
329
+ setSearchTerm("");
330
+ inputValueRef.current = "";
331
+ }
332
+ }, [validatedOptions.length]);
333
+ useEffect(() => {
334
+ const externalValue = _valueProp !== void 0 ? _valueProp : valueSelected;
335
+ const newValue = normalizeValue(externalValue);
336
+ setSelectedValue((prevValue) => {
337
+ const prevNormalized = normalizeValue(prevValue);
338
+ return prevNormalized !== newValue ? newValue : prevValue;
339
+ });
340
+ }, [valueSelected, _valueProp, normalizeValue]);
341
+ useEffect(() => {
342
+ const handleClickOutside = (event) => {
343
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
344
+ if (blurTimeoutRef.current) {
345
+ clearTimeout(blurTimeoutRef.current);
346
+ blurTimeoutRef.current = null;
347
+ }
348
+ setIsOpen(false);
349
+ setIsFocused(false);
350
+ setSearchTerm("");
351
+ setHighlightedIndex(-1);
352
+ }
353
+ };
354
+ document.addEventListener("mousedown", handleClickOutside);
355
+ return () => {
356
+ document.removeEventListener("mousedown", handleClickOutside);
357
+ if (blurTimeoutRef.current) {
358
+ clearTimeout(blurTimeoutRef.current);
359
+ }
360
+ if (hoverTimeoutRef.current) {
361
+ clearTimeout(hoverTimeoutRef.current);
362
+ }
363
+ };
364
+ }, []);
365
+ const getDisplayValue = useCallback(() => {
366
+ if (selectedValue && (validatedOptions == null ? void 0 : validatedOptions.length) > 0) {
367
+ const selected = validatedOptions.find(
368
+ (opt) => normalizeValue(opt.value) === normalizeValue(selectedValue)
369
+ );
370
+ if (selected) {
371
+ return showDisplayValue && selected.displayValue ? selected.displayValue : selected.label;
372
+ }
373
+ }
374
+ if (selectedValue && (!validatedOptions || validatedOptions.length === 0)) {
375
+ return selectedValue;
376
+ }
377
+ return "";
378
+ }, [selectedValue, validatedOptions, showDisplayValue, normalizeValue]);
379
+ const displayValue = useMemo(() => getDisplayValue(), [getDisplayValue]);
380
+ const inputClasses = useMemo(() => {
381
+ return clsx(
382
+ "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",
383
+ sizeClasses.input,
384
+ sizeClasses.padding,
385
+ variantClasses,
386
+ {
387
+ "tw-bg-white": valueSelected || displayValue || isFocused,
388
+ "tw-bg-color-gray-5": !valueSelected || !displayValue,
389
+ "!tw-bg-[#F8F7F6] tw-cursor-not-allowed tw-pointer-events-none": disabled
390
+ },
391
+ !label && "tw-flex tw-items-center",
392
+ {
393
+ "!tw-border-color-primary": isFocused && experience === "business"
394
+ },
395
+ {
396
+ "!tw-border-[#804D7B]": isFocused && experience === "personal"
397
+ },
398
+ error ? "!tw-border-color-text-critical " : "tw-border-[#EBE3DD] hover:tw-border-[#C5B7AC]",
399
+ "focus:tw-shadow-sm focus:tw-ring-offset-1",
400
+ className,
401
+ inputClassName
402
+ );
403
+ }, [sizeClasses, variantClasses, valueSelected, displayValue, isFocused, disabled, label, experience, error, className, inputClassName]);
404
+ const filteredOptions = useMemo(() => {
405
+ var _a;
406
+ if (!enableSearch) {
407
+ return validatedOptions;
408
+ }
409
+ (_a = dropdownRef.current) == null ? void 0 : _a.scrollTo(0, 0);
410
+ const updatedFilteredOptions = validatedOptions.filter((option) => {
411
+ var _a2;
412
+ return (_a2 = option == null ? void 0 : option.label) == null ? void 0 : _a2.toLowerCase().includes(searchTerm == null ? void 0 : searchTerm.toLowerCase());
413
+ });
414
+ return updatedFilteredOptions;
415
+ }, [validatedOptions, searchTerm, enableSearch]);
416
+ const getSelectedOptionIndex = useCallback(() => {
417
+ if (!selectedValue || !filteredOptions.length) {
418
+ return 0;
419
+ }
420
+ const index = filteredOptions.findIndex(
421
+ (option) => normalizeValue(option.value) === normalizeValue(selectedValue)
422
+ );
423
+ return index >= 0 ? index : 0;
424
+ }, [selectedValue, filteredOptions, normalizeValue]);
425
+ const handleInputInteraction = useCallback(
426
+ (_e) => {
427
+ var _a;
428
+ if (blurTimeoutRef.current) {
429
+ clearTimeout(blurTimeoutRef.current);
430
+ blurTimeoutRef.current = null;
431
+ }
432
+ if (isOpen) {
433
+ setIsOpen(false);
434
+ setIsFocused(false);
435
+ setSearchTerm("");
436
+ setHighlightedIndex(-1);
437
+ (_a = inputRef.current) == null ? void 0 : _a.blur();
438
+ return;
439
+ }
440
+ setIsFocused(true);
441
+ setIsOpen(true);
442
+ setHighlightedIndex(getSelectedOptionIndex());
443
+ if (inputRef.current) {
444
+ inputRef.current.focus();
445
+ }
446
+ },
447
+ [isOpen, getSelectedOptionIndex]
448
+ );
449
+ const handleKeyDown = useCallback(
450
+ (e) => {
451
+ var _a;
452
+ if (!isOpen) return;
453
+ switch (e.key) {
454
+ case "ArrowDown":
455
+ e.preventDefault();
456
+ setHighlightedIndex((prev) => {
457
+ const nextIndex = prev < filteredOptions.length - 1 ? prev + 1 : prev;
458
+ return nextIndex;
459
+ });
460
+ break;
461
+ case "ArrowUp":
462
+ e.preventDefault();
463
+ setHighlightedIndex((prev) => {
464
+ const nextIndex = prev > 0 ? prev - 1 : prev;
465
+ return nextIndex;
466
+ });
467
+ break;
468
+ case "Enter":
469
+ e.preventDefault();
470
+ if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {
471
+ handleOptionSelect(filteredOptions[highlightedIndex]);
472
+ }
473
+ break;
474
+ case "Escape":
475
+ e.preventDefault();
476
+ setIsOpen(false);
477
+ setIsFocused(false);
478
+ setSearchTerm("");
479
+ setHighlightedIndex(-1);
480
+ (_a = inputRef.current) == null ? void 0 : _a.blur();
481
+ break;
482
+ default:
483
+ break;
484
+ }
485
+ },
486
+ [isOpen, highlightedIndex, filteredOptions, handleOptionSelect]
487
+ );
488
+ useEffect(() => {
489
+ if (highlightedIndex >= 0 && optionRefs.current[highlightedIndex]) {
490
+ optionRefs.current[highlightedIndex].scrollIntoView({
491
+ block: "nearest",
492
+ behavior: "smooth"
493
+ });
494
+ }
495
+ }, [highlightedIndex]);
496
+ useEffect(() => {
497
+ optionRefs.current = [];
498
+ }, [filteredOptions.length]);
499
+ const handleMouseEnter = useCallback(() => {
500
+ if (hoverTimeoutRef.current) {
501
+ clearTimeout(hoverTimeoutRef.current);
502
+ }
503
+ if (!isHovering) {
504
+ setIsHovering(true);
505
+ }
506
+ }, [isHovering]);
507
+ const handleMouseLeave = useCallback(() => {
508
+ hoverTimeoutRef.current = setTimeout(() => {
509
+ setIsHovering(false);
510
+ }, 50);
511
+ }, []);
512
+ const handleChevronClick = useCallback(
513
+ (e) => {
514
+ var _a;
515
+ e.preventDefault();
516
+ if (blurTimeoutRef.current) {
517
+ clearTimeout(blurTimeoutRef.current);
518
+ blurTimeoutRef.current = null;
519
+ }
520
+ if (isOpen) {
521
+ setIsOpen(false);
522
+ setIsFocused(false);
523
+ setSearchTerm("");
524
+ setHighlightedIndex(-1);
525
+ (_a = inputRef.current) == null ? void 0 : _a.blur();
526
+ } else {
527
+ if (inputRef.current) {
528
+ inputRef.current.focus();
529
+ }
530
+ handleInputInteraction();
531
+ }
532
+ },
533
+ [isOpen, handleInputInteraction]
534
+ );
535
+ const handleChevronMouseDown = useCallback(
536
+ (e) => {
537
+ if (isHovering && selectedValue && allowClear) {
538
+ handleClear(e);
539
+ } else {
540
+ handleChevronClick(e);
541
+ }
542
+ },
543
+ [isHovering, selectedValue, allowClear, handleClear, handleChevronClick]
544
+ );
545
+ const handleOptionClick = useCallback((option) => {
546
+ handleOptionSelect(option);
547
+ }, [handleOptionSelect]);
548
+ const handleOptionMouseEnter = useCallback((index) => {
549
+ setHighlightedIndex(index);
550
+ }, []);
551
+ return /* @__PURE__ */ jsx4(InputWrapper, { disabled, disabledTooltip, children: /* @__PURE__ */ jsxs(
552
+ "div",
553
+ {
554
+ style,
555
+ className: clsx("tw-relative tw-w-full", wrapperClassName, {
556
+ "tw-cursor-not-allowed": disabled
557
+ }),
558
+ ref: dropdownRef,
559
+ onMouseEnter: handleMouseEnter,
560
+ onMouseLeave: handleMouseLeave,
561
+ children: [
562
+ /* @__PURE__ */ jsxs("div", { className: "tw-relative", children: [
563
+ /* @__PURE__ */ jsx4(
564
+ "input",
565
+ {
566
+ ref: inputRef,
567
+ type: "text",
568
+ id,
569
+ name,
570
+ tabIndex,
571
+ autoComplete: "off",
572
+ autoCorrect: "off",
573
+ autoCapitalize: "off",
574
+ spellCheck: "false",
575
+ value: isFocused && enableSearch ? searchTerm : displayValue,
576
+ onChange: enableSearch ? handleSearchChange : void 0,
577
+ onClick: handleInputInteraction,
578
+ onKeyDown: handleKeyDown,
579
+ className: inputClasses,
580
+ readOnly: !isFocused || !enableSearch
581
+ }
582
+ ),
583
+ label && size !== "small" && /* @__PURE__ */ jsxs(
584
+ "label",
585
+ {
586
+ htmlFor: id,
587
+ className: clsx(
588
+ "tw-absolute tw-left-[18px] tw-pointer-events-none tw-transition-all tw-duration-200 tw-ease-out tw-text-gray-500",
589
+ isActive ? sizeClasses.labelActive : sizeClasses.labelInactive,
590
+ error && "tw-text-color-text-critical",
591
+ labelClassName
592
+ ),
593
+ children: [
594
+ label,
595
+ mandatory && /* @__PURE__ */ jsx4("span", { className: "tw-text-color-text-critical tw-ml-1", children: "*" })
596
+ ]
597
+ }
598
+ ),
599
+ /* @__PURE__ */ jsxs(
600
+ "div",
601
+ {
602
+ className: clsx(
603
+ "tw-absolute tw-right-3 tw--translate-y-1/2 tw-flex tw-items-center",
604
+ {
605
+ "!tw-right-[5px]": doubleCharSearch && !(isHovering && selectedValue && allowClear),
606
+ "tw-top-3 !tw-right-2": size === "small",
607
+ "tw-top-1/2": size !== "small"
608
+ }
609
+ ),
610
+ children: [
611
+ disabled && /* @__PURE__ */ jsx4("div", { className: "tw-absolute tw-right-0 -tw-top-2", children: /* @__PURE__ */ jsx4(Lock, { size: 16 }) }),
612
+ isLoading ? /* @__PURE__ */ jsx4("div", { children: /* @__PURE__ */ jsx4(LoadingSpinner_default, { size: "xs" }) }) : /* @__PURE__ */ jsx4(
613
+ "div",
614
+ {
615
+ className: clsx(
616
+ "tw-transition-all tw-duration-200 tw-cursor-pointer tw-flex tw-items-center",
617
+ // Only rotate chevron when open and not showing clear icon
618
+ isOpen && !(isHovering && selectedValue && allowClear) && "-tw-rotate-180"
619
+ ),
620
+ onMouseDown: handleChevronMouseDown,
621
+ children: disabled ? null : isHovering && selectedValue && allowClear ? /* @__PURE__ */ jsx4(
622
+ CrossV2,
623
+ {
624
+ color: "#111827",
625
+ className: clsx({ "tw-mr-1": size !== "small" }),
626
+ size: size === "small" ? 12 : 16
627
+ }
628
+ ) : /* @__PURE__ */ jsx4(
629
+ Chevron,
630
+ {
631
+ className: clsx("tw-text-gray-400"),
632
+ color: "#6B7280"
633
+ }
634
+ )
635
+ }
636
+ )
637
+ ]
638
+ }
639
+ )
640
+ ] }),
641
+ isOpen && /* @__PURE__ */ jsx4(
642
+ "div",
643
+ {
644
+ className: clsx(
645
+ "tw-absolute tw-z-[100] tw-w-full tw-mt-0 tw-bg-white tw-border tw-border-[#ebe3dd] tw-border-solid tw-rounded-xl tw-shadow-lg tw-overflow-y-auto tw-py-1",
646
+ { "tw-max-h-60": !doubleCharSearch },
647
+ { "tw-max-h-44": doubleCharSearch },
648
+ dropdownClassName
649
+ ),
650
+ ref: optionListRef,
651
+ children: filteredOptions.length > 0 ? filteredOptions.map((option, index) => {
652
+ const isSelected = normalizeValue(selectedValue) === normalizeValue(option.value);
653
+ const isHighlighted = index === highlightedIndex;
654
+ return /* @__PURE__ */ jsx4("div", { ref: (el) => optionRefs.current[index] = el, children: /* @__PURE__ */ jsx4(
655
+ OptionItem,
656
+ {
657
+ option,
658
+ index,
659
+ isSelected,
660
+ isHighlighted,
661
+ experience,
662
+ size,
663
+ optionClassName,
664
+ onSelectHandler: handleOptionClick,
665
+ onMouseEnterHandler: handleOptionMouseEnter
666
+ }
667
+ ) }, doubleCharSearch ? option.label : option.value);
668
+ }) : /* @__PURE__ */ jsx4("div", { className: "tw-px-4 tw-py-3 tw-text-gray-500 tw-text-sm", children: "No options found" })
669
+ }
670
+ )
671
+ ]
672
+ }
673
+ ) });
674
+ };
675
+ Select.displayName = "Select";
676
+ var Select_default = Select;
677
+
678
+ export {
679
+ Select,
680
+ Select_default
681
+ };