se-design 1.0.59 → 1.0.61-dev

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 (459) hide show
  1. package/dist/assets/colors.css +2 -2
  2. package/dist/assets/icons/checkbox-disabled-minus.svg +1 -1
  3. package/dist/assets/icons/checkbox-disabled-tick.svg +1 -1
  4. package/dist/assets/icons/checkbox-fill.svg +1 -1
  5. package/dist/assets/icons/checkbox-hover-fill.svg +2 -2
  6. package/dist/assets/icons/sort-asc.svg +3 -4
  7. package/dist/assets/icons/sort-desc.svg +2 -3
  8. package/dist/assets/style.css +1 -1
  9. package/dist/components/AutoCompleteInput/index.d.ts +37 -7
  10. package/dist/components/DropdownWithInputTags/index.d.ts +7 -1
  11. package/dist/components/Header/index.d.ts +1 -0
  12. package/dist/components/OTPInput/index.d.ts +1 -0
  13. package/dist/components/PhoneInput/index.d.ts +19 -0
  14. package/dist/components/RadioGroup/index.d.ts +17 -0
  15. package/dist/components/SidebarOverlay/index.d.ts +4 -0
  16. package/dist/components/SkipLinksBar/index.d.ts +11 -0
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/index.js +124 -120
  19. package/dist/index.js.map +1 -1
  20. package/dist/index10.js +56 -46
  21. package/dist/index10.js.map +1 -1
  22. package/dist/index100.js +2 -2
  23. package/dist/index100.js.map +1 -1
  24. package/dist/index101.js +2 -2
  25. package/dist/index101.js.map +1 -1
  26. package/dist/index102.js +2 -2
  27. package/dist/index102.js.map +1 -1
  28. package/dist/index103.js +2 -2
  29. package/dist/index103.js.map +1 -1
  30. package/dist/index104.js +1 -1
  31. package/dist/index104.js.map +1 -1
  32. package/dist/index105.js +1 -1
  33. package/dist/index105.js.map +1 -1
  34. package/dist/index106.js +2 -2
  35. package/dist/index106.js.map +1 -1
  36. package/dist/index107.js +2 -2
  37. package/dist/index107.js.map +1 -1
  38. package/dist/index108.js +2 -2
  39. package/dist/index108.js.map +1 -1
  40. package/dist/index109.js +2 -2
  41. package/dist/index109.js.map +1 -1
  42. package/dist/index11.js +48 -18
  43. package/dist/index11.js.map +1 -1
  44. package/dist/index110.js +1 -1
  45. package/dist/index110.js.map +1 -1
  46. package/dist/index111.js +1 -1
  47. package/dist/index111.js.map +1 -1
  48. package/dist/index112.js +2 -2
  49. package/dist/index112.js.map +1 -1
  50. package/dist/index113.js +1 -1
  51. package/dist/index113.js.map +1 -1
  52. package/dist/index114.js +1 -1
  53. package/dist/index114.js.map +1 -1
  54. package/dist/index115.js +2 -2
  55. package/dist/index115.js.map +1 -1
  56. package/dist/index116.js +2 -2
  57. package/dist/index116.js.map +1 -1
  58. package/dist/index117.js +2 -2
  59. package/dist/index117.js.map +1 -1
  60. package/dist/index118.js +2 -2
  61. package/dist/index118.js.map +1 -1
  62. package/dist/index119.js +1 -1
  63. package/dist/index119.js.map +1 -1
  64. package/dist/index12.js +20 -11
  65. package/dist/index12.js.map +1 -1
  66. package/dist/index120.js +1 -1
  67. package/dist/index120.js.map +1 -1
  68. package/dist/index121.js +1 -1
  69. package/dist/index121.js.map +1 -1
  70. package/dist/index122.js +1 -1
  71. package/dist/index122.js.map +1 -1
  72. package/dist/index123.js +1 -1
  73. package/dist/index123.js.map +1 -1
  74. package/dist/index124.js +1 -1
  75. package/dist/index124.js.map +1 -1
  76. package/dist/index125.js +1 -1
  77. package/dist/index125.js.map +1 -1
  78. package/dist/index126.js +2 -2
  79. package/dist/index126.js.map +1 -1
  80. package/dist/index127.js +1 -1
  81. package/dist/index127.js.map +1 -1
  82. package/dist/index128.js +2 -2
  83. package/dist/index128.js.map +1 -1
  84. package/dist/index129.js +1 -1
  85. package/dist/index129.js.map +1 -1
  86. package/dist/index13.js +15 -9
  87. package/dist/index13.js.map +1 -1
  88. package/dist/index130.js +1 -1
  89. package/dist/index130.js.map +1 -1
  90. package/dist/index131.js +1 -1
  91. package/dist/index131.js.map +1 -1
  92. package/dist/index132.js +1 -1
  93. package/dist/index132.js.map +1 -1
  94. package/dist/index133.js +1 -1
  95. package/dist/index133.js.map +1 -1
  96. package/dist/index134.js +2 -2
  97. package/dist/index134.js.map +1 -1
  98. package/dist/index135.js +2 -2
  99. package/dist/index135.js.map +1 -1
  100. package/dist/index136.js +2 -2
  101. package/dist/index136.js.map +1 -1
  102. package/dist/index137.js +2 -2
  103. package/dist/index137.js.map +1 -1
  104. package/dist/index138.js +2 -2
  105. package/dist/index138.js.map +1 -1
  106. package/dist/index139.js +2 -2
  107. package/dist/index139.js.map +1 -1
  108. package/dist/index14.js +10 -202
  109. package/dist/index14.js.map +1 -1
  110. package/dist/index140.js +2 -2
  111. package/dist/index140.js.map +1 -1
  112. package/dist/index141.js +1 -1
  113. package/dist/index141.js.map +1 -1
  114. package/dist/index142.js +1 -1
  115. package/dist/index142.js.map +1 -1
  116. package/dist/index143.js +1 -1
  117. package/dist/index143.js.map +1 -1
  118. package/dist/index144.js +1 -1
  119. package/dist/index144.js.map +1 -1
  120. package/dist/index145.js +1 -1
  121. package/dist/index145.js.map +1 -1
  122. package/dist/index146.js +1 -1
  123. package/dist/index146.js.map +1 -1
  124. package/dist/index147.js +1 -1
  125. package/dist/index147.js.map +1 -1
  126. package/dist/index148.js +1 -1
  127. package/dist/index148.js.map +1 -1
  128. package/dist/index149.js +1 -1
  129. package/dist/index149.js.map +1 -1
  130. package/dist/index15.js +216 -59
  131. package/dist/index15.js.map +1 -1
  132. package/dist/index150.js +1 -1
  133. package/dist/index150.js.map +1 -1
  134. package/dist/index151.js +1 -1
  135. package/dist/index151.js.map +1 -1
  136. package/dist/index152.js +1 -1
  137. package/dist/index152.js.map +1 -1
  138. package/dist/index153.js +1 -1
  139. package/dist/index153.js.map +1 -1
  140. package/dist/index154.js +1 -1
  141. package/dist/index154.js.map +1 -1
  142. package/dist/index155.js +1 -1
  143. package/dist/index155.js.map +1 -1
  144. package/dist/index156.js +1 -1
  145. package/dist/index156.js.map +1 -1
  146. package/dist/index157.js +1 -1
  147. package/dist/index157.js.map +1 -1
  148. package/dist/index158.js +1 -1
  149. package/dist/index158.js.map +1 -1
  150. package/dist/index159.js +1 -1
  151. package/dist/index159.js.map +1 -1
  152. package/dist/index16.js +60 -84
  153. package/dist/index16.js.map +1 -1
  154. package/dist/index160.js +1 -1
  155. package/dist/index160.js.map +1 -1
  156. package/dist/index161.js +1 -1
  157. package/dist/index161.js.map +1 -1
  158. package/dist/index162.js +1 -1
  159. package/dist/index162.js.map +1 -1
  160. package/dist/index163.js +2 -2
  161. package/dist/index163.js.map +1 -1
  162. package/dist/index164.js +1 -1
  163. package/dist/index164.js.map +1 -1
  164. package/dist/index165.js +2 -2
  165. package/dist/index165.js.map +1 -1
  166. package/dist/index166.js +1 -1
  167. package/dist/index166.js.map +1 -1
  168. package/dist/index167.js +2 -2
  169. package/dist/index167.js.map +1 -1
  170. package/dist/index168.js +1 -1
  171. package/dist/index168.js.map +1 -1
  172. package/dist/index169.js +2 -2
  173. package/dist/index169.js.map +1 -1
  174. package/dist/index17.js +80 -274
  175. package/dist/index17.js.map +1 -1
  176. package/dist/index170.js +1 -1
  177. package/dist/index170.js.map +1 -1
  178. package/dist/index171.js +1 -1
  179. package/dist/index171.js.map +1 -1
  180. package/dist/index172.js +1 -1
  181. package/dist/index172.js.map +1 -1
  182. package/dist/index173.js +1 -1
  183. package/dist/index173.js.map +1 -1
  184. package/dist/index174.js +1 -1
  185. package/dist/index174.js.map +1 -1
  186. package/dist/index175.js +1 -1
  187. package/dist/index175.js.map +1 -1
  188. package/dist/index176.js +1 -1
  189. package/dist/index176.js.map +1 -1
  190. package/dist/index177.js +2 -2
  191. package/dist/index177.js.map +1 -1
  192. package/dist/index178.js +1 -1
  193. package/dist/index178.js.map +1 -1
  194. package/dist/index179.js +2 -2
  195. package/dist/index179.js.map +1 -1
  196. package/dist/index18.js +281 -11
  197. package/dist/index18.js.map +1 -1
  198. package/dist/index180.js +2 -149
  199. package/dist/index180.js.map +1 -1
  200. package/dist/index181.js +2 -6
  201. package/dist/index181.js.map +1 -1
  202. package/dist/index182.js +149 -5
  203. package/dist/index182.js.map +1 -1
  204. package/dist/index183.js +12 -0
  205. package/dist/index183.js.map +1 -0
  206. package/dist/index184.js +9 -0
  207. package/dist/index184.js.map +1 -0
  208. package/dist/index185.js +4 -23
  209. package/dist/index185.js.map +1 -1
  210. package/dist/index188.js +27 -0
  211. package/dist/index188.js.map +1 -0
  212. package/dist/index189.js +60 -21
  213. package/dist/index189.js.map +1 -1
  214. package/dist/index19.js +12 -31
  215. package/dist/index19.js.map +1 -1
  216. package/dist/index191.js +87 -0
  217. package/dist/index191.js.map +1 -0
  218. package/dist/index193.js +26 -0
  219. package/dist/index193.js.map +1 -0
  220. package/dist/index20.js +32 -56
  221. package/dist/index20.js.map +1 -1
  222. package/dist/{index197.js → index201.js} +1 -1
  223. package/dist/{index197.js.map → index201.js.map} +1 -1
  224. package/dist/{index205.js → index209.js} +1 -1
  225. package/dist/{index205.js.map → index209.js.map} +1 -1
  226. package/dist/index21.js +53 -75
  227. package/dist/index21.js.map +1 -1
  228. package/dist/{index207.js → index211.js} +1 -1
  229. package/dist/{index207.js.map → index211.js.map} +1 -1
  230. package/dist/{index208.js → index212.js} +2 -2
  231. package/dist/{index208.js.map → index212.js.map} +1 -1
  232. package/dist/index22.js +77 -21
  233. package/dist/index22.js.map +1 -1
  234. package/dist/index222.js +3 -9
  235. package/dist/index222.js.map +1 -1
  236. package/dist/index224.js +56 -167
  237. package/dist/index224.js.map +1 -1
  238. package/dist/index225.js +54 -11
  239. package/dist/index225.js.map +1 -1
  240. package/dist/index227.js +18 -5
  241. package/dist/index227.js.map +1 -1
  242. package/dist/index228.js +9 -5
  243. package/dist/index228.js.map +1 -1
  244. package/dist/index229.js +8 -36
  245. package/dist/index229.js.map +1 -1
  246. package/dist/index23.js +19 -190
  247. package/dist/index23.js.map +1 -1
  248. package/dist/index230.js +5 -2
  249. package/dist/index230.js.map +1 -1
  250. package/dist/index231.js +170 -8
  251. package/dist/index231.js.map +1 -1
  252. package/dist/index232.js +11 -327
  253. package/dist/index232.js.map +1 -1
  254. package/dist/index233.js +5 -49
  255. package/dist/index233.js.map +1 -1
  256. package/dist/index234.js +6 -2
  257. package/dist/index234.js.map +1 -1
  258. package/dist/index235.js +35 -73
  259. package/dist/index235.js.map +1 -1
  260. package/dist/index236.js +2 -93
  261. package/dist/index236.js.map +1 -1
  262. package/dist/index237.js +5 -49
  263. package/dist/index237.js.map +1 -1
  264. package/dist/index238.js +326 -7
  265. package/dist/index238.js.map +1 -1
  266. package/dist/index239.js +49 -4
  267. package/dist/index239.js.map +1 -1
  268. package/dist/index24.js +217 -44
  269. package/dist/index24.js.map +1 -1
  270. package/dist/index240.js +2 -52
  271. package/dist/index240.js.map +1 -1
  272. package/dist/index241.js +76 -2
  273. package/dist/index241.js.map +1 -1
  274. package/dist/index242.js +93 -2
  275. package/dist/index242.js.map +1 -1
  276. package/dist/index243.js +55 -0
  277. package/dist/index243.js.map +1 -0
  278. package/dist/index244.js +11 -0
  279. package/dist/index244.js.map +1 -0
  280. package/dist/index245.js +8 -0
  281. package/dist/index245.js.map +1 -0
  282. package/dist/index246.js +55 -0
  283. package/dist/index246.js.map +1 -0
  284. package/dist/index247.js +5 -0
  285. package/dist/index247.js.map +1 -0
  286. package/dist/index248.js +5 -0
  287. package/dist/index248.js.map +1 -0
  288. package/dist/index25.js +48 -18
  289. package/dist/index25.js.map +1 -1
  290. package/dist/index26.js +16 -80
  291. package/dist/index26.js.map +1 -1
  292. package/dist/index27.js +82 -79
  293. package/dist/index27.js.map +1 -1
  294. package/dist/index28.js +80 -130
  295. package/dist/index28.js.map +1 -1
  296. package/dist/index29.js +131 -55
  297. package/dist/index29.js.map +1 -1
  298. package/dist/index3.js +2 -2
  299. package/dist/index30.js +53 -97
  300. package/dist/index30.js.map +1 -1
  301. package/dist/index31.js +99 -61
  302. package/dist/index31.js.map +1 -1
  303. package/dist/index32.js +59 -32
  304. package/dist/index32.js.map +1 -1
  305. package/dist/index33.js +40 -71
  306. package/dist/index33.js.map +1 -1
  307. package/dist/index34.js +68 -41
  308. package/dist/index34.js.map +1 -1
  309. package/dist/index35.js +45 -57
  310. package/dist/index35.js.map +1 -1
  311. package/dist/index36.js +54 -230
  312. package/dist/index36.js.map +1 -1
  313. package/dist/index37.js +281 -70
  314. package/dist/index37.js.map +1 -1
  315. package/dist/index38.js +68 -80
  316. package/dist/index38.js.map +1 -1
  317. package/dist/index39.js +82 -32
  318. package/dist/index39.js.map +1 -1
  319. package/dist/index40.js +26 -44
  320. package/dist/index40.js.map +1 -1
  321. package/dist/index41.js +45 -67
  322. package/dist/index41.js.map +1 -1
  323. package/dist/index42.js +65 -49
  324. package/dist/index42.js.map +1 -1
  325. package/dist/index43.js +49 -89
  326. package/dist/index43.js.map +1 -1
  327. package/dist/index44.js +141 -93
  328. package/dist/index44.js.map +1 -1
  329. package/dist/index45.js +189 -35
  330. package/dist/index45.js.map +1 -1
  331. package/dist/index46.js +34 -29
  332. package/dist/index46.js.map +1 -1
  333. package/dist/index47.js +31 -147
  334. package/dist/index47.js.map +1 -1
  335. package/dist/index48.js +138 -45
  336. package/dist/index48.js.map +1 -1
  337. package/dist/index49.js +52 -373
  338. package/dist/index49.js.map +1 -1
  339. package/dist/index5.js +116 -115
  340. package/dist/index5.js.map +1 -1
  341. package/dist/index50.js +375 -63
  342. package/dist/index50.js.map +1 -1
  343. package/dist/index51.js +65 -38
  344. package/dist/index51.js.map +1 -1
  345. package/dist/index52.js +35 -35
  346. package/dist/index52.js.map +1 -1
  347. package/dist/index53.js +35 -82
  348. package/dist/index53.js.map +1 -1
  349. package/dist/index54.js +81 -159
  350. package/dist/index54.js.map +1 -1
  351. package/dist/index55.js +157 -135
  352. package/dist/index55.js.map +1 -1
  353. package/dist/index56.js +149 -29
  354. package/dist/index56.js.map +1 -1
  355. package/dist/index57.js +29 -86
  356. package/dist/index57.js.map +1 -1
  357. package/dist/index58.js +80 -113
  358. package/dist/index58.js.map +1 -1
  359. package/dist/index59.js +114 -56
  360. package/dist/index59.js.map +1 -1
  361. package/dist/index6.js +32 -51
  362. package/dist/index6.js.map +1 -1
  363. package/dist/index60.js +56 -147
  364. package/dist/index60.js.map +1 -1
  365. package/dist/index61.js +146 -312
  366. package/dist/index61.js.map +1 -1
  367. package/dist/index62.js +317 -44
  368. package/dist/index62.js.map +1 -1
  369. package/dist/index63.js +43 -139
  370. package/dist/index63.js.map +1 -1
  371. package/dist/index64.js +140 -12
  372. package/dist/index64.js.map +1 -1
  373. package/dist/index65.js +10 -42
  374. package/dist/index65.js.map +1 -1
  375. package/dist/index66.js +44 -5
  376. package/dist/index66.js.map +1 -1
  377. package/dist/index67.js +18 -8
  378. package/dist/index67.js.map +1 -1
  379. package/dist/index68.js +8 -0
  380. package/dist/index68.js.map +1 -0
  381. package/dist/index69.js +9 -2
  382. package/dist/index69.js.map +1 -1
  383. package/dist/index7.js +47 -81
  384. package/dist/index7.js.map +1 -1
  385. package/dist/index71.js +1 -1
  386. package/dist/index71.js.map +1 -1
  387. package/dist/index72.js +1 -1
  388. package/dist/index72.js.map +1 -1
  389. package/dist/index73.js +2 -2
  390. package/dist/index73.js.map +1 -1
  391. package/dist/index74.js +1 -1
  392. package/dist/index74.js.map +1 -1
  393. package/dist/index75.js +1 -1
  394. package/dist/index75.js.map +1 -1
  395. package/dist/index76.js +1 -1
  396. package/dist/index76.js.map +1 -1
  397. package/dist/index77.js +1 -1
  398. package/dist/index77.js.map +1 -1
  399. package/dist/index78.js +1 -1
  400. package/dist/index78.js.map +1 -1
  401. package/dist/index79.js +1 -1
  402. package/dist/index79.js.map +1 -1
  403. package/dist/index8.js +86 -26
  404. package/dist/index8.js.map +1 -1
  405. package/dist/index80.js +1 -1
  406. package/dist/index80.js.map +1 -1
  407. package/dist/index81.js +1 -1
  408. package/dist/index81.js.map +1 -1
  409. package/dist/index82.js +1 -1
  410. package/dist/index82.js.map +1 -1
  411. package/dist/index83.js +1 -1
  412. package/dist/index83.js.map +1 -1
  413. package/dist/index84.js +1 -1
  414. package/dist/index84.js.map +1 -1
  415. package/dist/index85.js +1 -1
  416. package/dist/index85.js.map +1 -1
  417. package/dist/index86.js +1 -1
  418. package/dist/index86.js.map +1 -1
  419. package/dist/index87.js +1 -1
  420. package/dist/index87.js.map +1 -1
  421. package/dist/index88.js +1 -1
  422. package/dist/index88.js.map +1 -1
  423. package/dist/index89.js +1 -1
  424. package/dist/index89.js.map +1 -1
  425. package/dist/index9.js +23 -59
  426. package/dist/index9.js.map +1 -1
  427. package/dist/index90.js +1 -1
  428. package/dist/index90.js.map +1 -1
  429. package/dist/index91.js +1 -1
  430. package/dist/index91.js.map +1 -1
  431. package/dist/index92.js +1 -1
  432. package/dist/index92.js.map +1 -1
  433. package/dist/index93.js +1 -1
  434. package/dist/index93.js.map +1 -1
  435. package/dist/index94.js +1 -1
  436. package/dist/index94.js.map +1 -1
  437. package/dist/index95.js +2 -2
  438. package/dist/index95.js.map +1 -1
  439. package/dist/index96.js +2 -2
  440. package/dist/index96.js.map +1 -1
  441. package/dist/index97.js +2 -2
  442. package/dist/index97.js.map +1 -1
  443. package/dist/index98.js +2 -2
  444. package/dist/index98.js.map +1 -1
  445. package/dist/index99.js +1 -1
  446. package/dist/index99.js.map +1 -1
  447. package/package.json +3 -2
  448. package/dist/index186.js +0 -65
  449. package/dist/index186.js.map +0 -1
  450. package/dist/index218.js +0 -7
  451. package/dist/index218.js.map +0 -1
  452. package/dist/index220.js +0 -62
  453. package/dist/index220.js.map +0 -1
  454. package/dist/index221.js +0 -13
  455. package/dist/index221.js.map +0 -1
  456. package/dist/index223.js +0 -8
  457. package/dist/index223.js.map +0 -1
  458. package/dist/index70.js +0 -5
  459. package/dist/index70.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index44.js","sources":["../src/components/PhoneInput/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport './style.scss';\nimport countriesInfoJson from './countriesInfo.json';\nimport { Icon } from '../Icon';\n\nexport interface PhoneInputProps {\n onCountrycodeChange: (countryCode: string) => void;\n onNumberChange: (number: string) => void;\n error?: boolean;\n errorMessage?: string;\n value?: {\n countryCode: string;\n number: string;\n };\n label?: string;\n automationId?: string;\n}\n\nexport const PhoneInput: React.FC<PhoneInputProps> = ({\n onCountrycodeChange,\n onNumberChange,\n error,\n errorMessage,\n value,\n label,\n automationId = ''\n}) => {\n const [countryCode, setCountryCode] = useState(value?.countryCode || countriesInfoJson[0].dial_code);\n const [displaySelectCountryCode, setDisplaySelectCountryCode] = useState(false);\n const [countriesInfo, setCountriesInfo] = useState(countriesInfoJson);\n const [searchValue, setSearchValue] = useState('');\n const [enteredNumber, setEnteredNumber] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n\n const countryInfo = countriesInfoJson.find((country) => country.dial_code === countryCode);\n\n const handleCountryCodeSelect = (country: string) => {\n if (country) {\n setCountryCode(country);\n onCountrycodeChange(country);\n }\n setDisplaySelectCountryCode(false);\n };\n\n const handleCountryCodeSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\n const searchValue = event.target.value;\n setSearchValue(searchValue);\n const filteredCountries = countriesInfoJson.filter(\n (country) =>\n country.name.toLowerCase().includes(searchValue.toLowerCase()) ||\n country.dial_code.toLowerCase().includes(searchValue.toLowerCase()) ||\n country.code.toLowerCase().includes(searchValue.toLowerCase())\n );\n setCountriesInfo(filteredCountries);\n };\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setDisplaySelectCountryCode(false);\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n useEffect(() => {\n if (value) {\n setCountryCode(value.countryCode);\n setEnteredNumber(value.number);\n }\n }, [value]);\n\n const handleEnteredNumberChange = (value: string) => {\n const numericValue = value.replace(/\\D/g, ''); // Remove non-numeric characters\n console.log('numericValue', numericValue);\n setEnteredNumber(numericValue);\n onNumberChange(numericValue);\n };\n\n return (\n <div className=\"phone-input-container-se-design-main-container\" data-automation-id={automationId}>\n {label && <div className=\"label-container\">{label}</div>}\n <div className={`phone-input-container-se-design-main ${error ? 'error' : ''}`} ref={containerRef}>\n <div className=\"phone-input-container-se-design\">\n <div\n className=\"phone-input-container-se-design-country-code\"\n onClick={() => {\n setDisplaySelectCountryCode(!displaySelectCountryCode);\n }}\n data-automation-id=\"country-code-selector\"\n >\n <img\n src={`https://flagcdn.com/${countryInfo?.code.toLowerCase()}.svg`}\n alt={countryInfo?.name}\n width=\"16\"\n />\n {countryInfo?.dial_code}\n <Icon name=\"chevron\" className={!displaySelectCountryCode ? '' : 'rotate-180'} />\n </div>\n <span className=\"divider\" />\n <input\n type=\"tel\"\n placeholder=\"Enter phone number\"\n className=\"phone-input-container-se-design-phone-number-input\"\n onChange={(event) => handleEnteredNumberChange(event.target.value)}\n value={enteredNumber}\n pattern=\"[0-9]*\"\n data-automation-id=\"phone-number-input-field\"\n />\n </div>\n\n {displaySelectCountryCode && (\n <div className=\"phone-input-container-se-design-country-code-list\" data-automation-id=\"country-code-list\">\n <div className=\"search-input-wrapper\">\n <Icon name=\"search\" className=\"search-icon\" />\n <input\n type=\"text\"\n placeholder=\"Search\"\n className=\"phone-input-container-se-design-country-code-list-item-input\"\n onChange={handleCountryCodeSearch}\n value={searchValue}\n data-automation-id=\"country-code-search-input\"\n />\n </div>\n {countriesInfo.length > 0 ? (\n countriesInfo.map((country) => (\n <div\n key={country.code}\n className=\"phone-input-container-se-design-country-code-list-item\"\n onClick={() => handleCountryCodeSelect(country.dial_code)}\n >\n <img src={`https://flagcdn.com/${country.code.toLowerCase()}.svg`} alt={country.name} width=\"16\" />\n <span>{country.name}</span>\n <span>({country.dial_code})</span>\n </div>\n ))\n ) : (\n <div className=\"phone-input-container-se-design-country-code-list-item-no-resuts\">No results found</div>\n )}\n </div>\n )}\n </div>\n {error && <div className=\"error-message\">{errorMessage}</div>}\n </div>\n );\n};\n"],"names":["PhoneInput","onCountrycodeChange","onNumberChange","error","errorMessage","value","label","automationId","countryCode","setCountryCode","useState","countriesInfoJson","dial_code","displaySelectCountryCode","setDisplaySelectCountryCode","countriesInfo","setCountriesInfo","searchValue","setSearchValue","enteredNumber","setEnteredNumber","containerRef","useRef","countryInfo","find","country","handleCountryCodeSelect","handleCountryCodeSearch","event","target","filteredCountries","filter","name","toLowerCase","includes","code","useEffect","handleClickOutside","current","contains","document","addEventListener","removeEventListener","number","handleEnteredNumberChange","numericValue","replace","console","log","React","createElement","className","ref","onClick","src","alt","width","Icon","type","placeholder","onChange","pattern","length","map","key"],"mappings":"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"}
1
+ {"version":3,"file":"index44.js","sources":["../src/components/AutoCompleteInput/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useCallback, useState } from 'react';\nimport './style.scss';\nimport { Icon } from '../Icon';\nimport { useStableId } from '../../utils/useStableId';\nimport { getA11yNameAttributes, useCombobox } from '../../utils/a11y';\n\nexport interface AutoCompleteInputProps {\n value: string;\n disabled?: boolean;\n maxLength?: number;\n /** Called when the user types in the input. Not called on suggestion selection. */\n onChange: (value: string) => void;\n tag?: string;\n error?: boolean;\n errorMessage?: string;\n label?: string;\n placeholder?: string;\n /**\n * Suggestion items. Default rendering expects { label, value } shape.\n * When renderOption is provided, any shape is accepted.\n */\n suggestions?: any[];\n /**\n * Called when a suggestion is selected (click or Enter key).\n * Receives the full item object from the suggestions array.\n */\n onSelect?: (item: any) => void;\n /**\n * Render custom content for each suggestion option. The component handles the option wrapper\n * (ARIA props, highlight, click, keyboard navigation). You only provide the inner content.\n */\n renderOption?: (suggestion: any, context: { isHighlighted: boolean; index: number }) => React.ReactNode;\n /**\n * Custom CSS class for option elements. Replaces the default 'suggestion-item' class.\n * Useful with renderOption to apply custom styling to option wrappers.\n */\n optionClassName?: string;\n automationId?: string;\n /**\n * Accessible label for the input. Used when no visible label is provided.\n */\n ariaLabel?: string;\n /**\n * ID(s) of element(s) that label this input. Takes precedence over ariaLabel.\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) providing additional description.\n */\n ariaDescribedBy?: string;\n}\n\nexport const AutoCompleteInput: React.FC<AutoCompleteInputProps> = React.memo(\n ({\n value,\n onChange,\n disabled = false,\n maxLength,\n tag = 'input',\n error = false,\n errorMessage,\n label,\n placeholder,\n suggestions = [],\n onSelect,\n renderOption,\n optionClassName,\n automationId = '',\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ...props\n }) => {\n const [filteredSuggestions, setFilteredSuggestions] = useState<any[]>([...suggestions]);\n const [isSuggestionBoxVisible, setSuggestionBoxVisible] = useState<boolean>(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Generate stable unique IDs per instance so label, input, listbox, and error never share IDs (HTML/ARIA require unique ids).\n const instanceId = useStableId(undefined, 'autocomplete');\n const inputId = `${instanceId}-input`;\n const listboxId = `${instanceId}-listbox`;\n const labelId = `${instanceId}-label`;\n const errorId = `${instanceId}-error`;\n\n const handleSelectSuggestion = useCallback(\n (item: any) => {\n setSuggestionBoxVisible(false);\n onSelect?.(item);\n },\n [onSelect]\n );\n\n // Use the comprehensive useCombobox hook\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex\n } = useCombobox<any>({\n items: filteredSuggestions,\n isOpen: isSuggestionBoxVisible,\n onOpenChange: setSuggestionBoxVisible,\n onSelect: handleSelectSuggestion,\n listboxId\n });\n\n const handleInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n setHighlightedIndex(-1); // Reset highlight on input change\n onChange(inputValue);\n\n // Internal filtering for default rendering (when no renderOption, component manages filtering)\n if (!renderOption) {\n if (inputValue === '') {\n setFilteredSuggestions([...suggestions]);\n } else {\n const filtered = suggestions?.filter(\n (suggestion) =>\n typeof suggestion === 'object' &&\n suggestion?.label?.toLowerCase().includes(inputValue?.toLowerCase() ?? '')\n );\n setFilteredSuggestions([...filtered]);\n }\n }\n },\n [onChange, suggestions, renderOption, setHighlightedIndex]\n );\n\n useEffect(() => {\n setFilteredSuggestions([...suggestions]);\n }, [suggestions]);\n\n const handleInputClick = () => {\n setSuggestionBoxVisible(true);\n };\n\n const handleInputFocus = () => {\n if (filteredSuggestions.length > 0) {\n setSuggestionBoxVisible(true);\n }\n };\n\n const handleClearInput = () => {\n onChange('');\n setHighlightedIndex(-1);\n inputRef.current?.focus();\n };\n\n // Build ARIA name attributes: when ariaLabel is provided use it (e.g. \"Signer 1 name\"); otherwise use visible label or ariaLabelledBy\n const a11yNameProps = getA11yNameAttributes({\n ariaLabelledBy: label && !ariaLabel ? labelId : ariaLabelledBy,\n ariaLabel,\n ariaDescribedBy: error ? errorId : ariaDescribedBy\n });\n\n return (\n <div \n className=\"main-container-autocomplete-se-design\" \n ref={containerRef} \n data-automation-id={automationId}\n {...containerProps}\n >\n {label && (\n <span\n id={labelId}\n className={`label-container ${disabled ? 'label-container-disabled' : ''}`}\n >\n {label}\n </span>\n )}\n <div className=\"input-container-wrapper\">\n <div className=\"input-wrapper\" style={{ pointerEvents: disabled ? 'none' : 'auto' }}>\n {React.createElement(tag, {\n ref: inputRef,\n id: inputId,\n value: value,\n onChange: handleInputChange,\n onClick: handleInputClick,\n onFocus: handleInputFocus,\n ...comboboxInputProps,\n disabled,\n className: `${error ? 'input-container-error' : 'input-container-default'} ${disabled ? 'input-container-disabled' : ''} ${filteredSuggestions.length > 0 || value ? 'with-icon' : ''} ${filteredSuggestions.length > 0 && value ? 'with-icons' : ''}`,\n maxLength,\n placeholder,\n 'aria-invalid': error || undefined,\n ...a11yNameProps,\n ...props\n })}\n {value && (\n <Icon\n name=\"close\"\n className=\"input-icon-close\"\n size={15}\n onClick={handleClearInput}\n stroke={disabled ? 'var(--color-gray-600)' : ''}\n ariaLabel=\"Clear input\"\n />\n )}\n {filteredSuggestions.length > 0 && (\n <Icon\n name=\"chevron\"\n rotation={isSuggestionBoxVisible ? '180' : '0'}\n className=\"input-icon-chevron\"\n stroke={disabled ? 'var(--color-gray-600)' : ''}\n aria-hidden=\"true\"\n />\n )}\n </div>\n {isSuggestionBoxVisible && filteredSuggestions.length > 0 && (\n <div\n {...listboxProps}\n aria-label={label || ariaLabel || 'Suggestions'}\n className=\"suggestions-list\"\n data-automation-id=\"autocomplete-suggestions-list\"\n >\n {filteredSuggestions.map((suggestion, index) => {\n const optionProps = getOptionProps(index, false);\n const isHighlighted = highlightedIndex === index;\n return (\n <div\n key={index}\n {...optionProps}\n className={`${optionClassName || 'suggestion-item'} ${isHighlighted ? 'suggestion-item-highlighted' : ''}`}\n onClick={() => handleSelectSuggestion(suggestion)}\n onMouseEnter={() => setHighlightedIndex(index)}\n data-automation-id={`autocomplete-suggestion-item-${index}`}\n >\n {renderOption\n ? renderOption(suggestion, { isHighlighted, index })\n : suggestion.label}\n </div>\n );\n })}\n </div>\n )}\n </div>\n {(error || maxLength) && (\n <div className={`${error ? 'error-and-max-word' : 'max-word-container'} ${disabled ? 'disabled' : ''}`}>\n {error && (\n <div id={errorId} className=\"error-message\" role=\"alert\">\n {errorMessage}\n </div>\n )}\n {maxLength && (\n <div className=\"max-word\">\n {value.length}/{maxLength}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n"],"names":["AutoCompleteInput","React","memo","value","onChange","disabled","maxLength","tag","error","errorMessage","label","placeholder","suggestions","onSelect","renderOption","optionClassName","automationId","ariaLabel","ariaLabelledBy","ariaDescribedBy","props","filteredSuggestions","setFilteredSuggestions","useState","isSuggestionBoxVisible","setSuggestionBoxVisible","containerRef","useRef","inputRef","instanceId","useStableId","undefined","inputId","listboxId","labelId","errorId","handleSelectSuggestion","useCallback","item","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","useCombobox","items","isOpen","onOpenChange","handleInputChange","e","inputValue","target","filtered","filter","suggestion","toLowerCase","includes","useEffect","handleInputClick","handleInputFocus","length","handleClearInput","current","focus","a11yNameProps","getA11yNameAttributes","createElement","_extends","className","ref","id","style","pointerEvents","onClick","onFocus","Icon","name","size","stroke","rotation","map","index","optionProps","isHighlighted","key","onMouseEnter","role"],"mappings":"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"}
package/dist/index45.js CHANGED
@@ -1,41 +1,195 @@
1
- import o from "react";
2
- const m = ({
3
- progress: a,
4
- backgroundColor: n = "#E8E8E8",
5
- progressColor: s = "#0066FF",
6
- size: e = 40,
7
- strokeWidth: r = 4
8
- }) => {
9
- const t = (e - r) / 2, c = t * 2 * Math.PI, l = c - a / 100 * c;
10
- return /* @__PURE__ */ o.createElement("svg", {
11
- width: e,
12
- height: e,
13
- style: {
14
- transform: "rotate(-90deg)"
1
+ import t, { useState as m, useRef as h, useCallback as f, useEffect as x } from "react";
2
+ /* empty css */
3
+ import g from "./index209.js";
4
+ import { Icon as T } from "./index5.js";
5
+ import { useStableId as E } from "./index184.js";
6
+ import { getA11yNameAttributes as ce } from "./index69.js";
7
+ import { useCombobox as se } from "./index191.js";
8
+ function c() {
9
+ return c = Object.assign ? Object.assign.bind() : function(s) {
10
+ for (var i = 1; i < arguments.length; i++) {
11
+ var r = arguments[i];
12
+ for (var l in r) ({}).hasOwnProperty.call(r, l) && (s[l] = r[l]);
15
13
  }
16
- }, /* @__PURE__ */ o.createElement("circle", {
17
- cx: e / 2,
18
- cy: e / 2,
19
- r: t,
20
- stroke: n,
21
- strokeWidth: r,
22
- fill: "none"
23
- }), /* @__PURE__ */ o.createElement("circle", {
24
- cx: e / 2,
25
- cy: e / 2,
26
- r: t,
27
- stroke: s,
28
- strokeWidth: r,
29
- strokeDasharray: c,
30
- strokeDashoffset: l,
31
- fill: "none",
32
- strokeLinecap: "round",
33
- style: {
34
- transition: "stroke-dashoffset 0.3s ease"
14
+ return s;
15
+ }, c.apply(null, arguments);
16
+ }
17
+ const fe = ({
18
+ onCountrycodeChange: s,
19
+ onNumberChange: i,
20
+ error: r,
21
+ errorMessage: l,
22
+ value: u,
23
+ label: C,
24
+ automationId: d = "",
25
+ ariaLabel: A,
26
+ ariaLabelledBy: L,
27
+ ariaDescribedBy: z,
28
+ disabled: a = !1
29
+ }) => {
30
+ const [v, P] = m(u?.countryCode || g[0].dial_code), [n, y] = m(!1), [w, $] = m(g), [G, k] = m(""), [Q, R] = m(""), U = h(null), F = h(null), O = h(null), p = h(!1), B = E(d, "phone-label"), K = E(d, "phone-listbox"), W = E(d, "phone-input"), V = E(d, "phone-error"), b = g.find((e) => e.dial_code === v), j = f(() => {
31
+ y(!1), k(""), $(g);
32
+ }, []), N = f((e) => {
33
+ e && (P(e), s(e)), j();
34
+ }, [s, j]), X = f((e) => {
35
+ p.current = !0, N(e.dial_code);
36
+ }, [N]), {
37
+ containerProps: q,
38
+ inputProps: Y,
39
+ listboxProps: Z,
40
+ getOptionProps: ee,
41
+ highlightedIndex: te,
42
+ setHighlightedIndex: H
43
+ } = se({
44
+ items: w,
45
+ isOpen: n,
46
+ onOpenChange: y,
47
+ onSelect: X,
48
+ listboxId: K
49
+ }), ne = (e) => {
50
+ const o = e.target.value;
51
+ k(o), H(-1);
52
+ const S = g.filter((_) => _.name.toLowerCase().includes(o.toLowerCase()) || _.dial_code.toLowerCase().includes(o.toLowerCase()) || _.code.toLowerCase().includes(o.toLowerCase()));
53
+ $(S);
54
+ }, I = h(n);
55
+ x(() => {
56
+ let e = null;
57
+ return I.current && !n && p.current && (e = requestAnimationFrame(() => {
58
+ F.current?.focus();
59
+ })), I.current && !n && (p.current = !1), I.current = n, () => {
60
+ e !== null && cancelAnimationFrame(e);
61
+ };
62
+ }, [n]), x(() => {
63
+ u && (P(u.countryCode), R(u.number));
64
+ }, [u]), x(() => {
65
+ let e = null;
66
+ return n && (e = requestAnimationFrame(() => {
67
+ O.current?.focus();
68
+ })), () => {
69
+ e !== null && cancelAnimationFrame(e);
70
+ };
71
+ }, [n]);
72
+ const oe = (e) => {
73
+ const o = e.replace(/\D/g, "");
74
+ R(o), i(o);
75
+ }, D = f(() => {
76
+ a || y((e) => !e);
77
+ }, [a]), re = f((e) => {
78
+ if (!a)
79
+ switch (e.key) {
80
+ case "Enter":
81
+ case " ":
82
+ e.preventDefault(), D();
83
+ break;
84
+ case "ArrowDown":
85
+ e.preventDefault(), n || y(!0);
86
+ break;
87
+ }
88
+ }, [a, n, D]), J = L || (!A && C ? B : void 0), M = L ? void 0 : A || (C ? void 0 : "Phone number"), ae = ce({
89
+ ariaLabelledBy: J,
90
+ ariaLabel: M,
91
+ ariaDescribedBy: r ? V : z
92
+ });
93
+ return /* @__PURE__ */ t.createElement("div", c({
94
+ className: "phone-input-container-se-design-main-container",
95
+ "data-automation-id": d
96
+ }, q, {
97
+ onKeyDownCapture: (e) => {
98
+ e.key === "Escape" && n && (p.current = !0), q.onKeyDownCapture(e);
35
99
  }
36
- }));
100
+ }), C && /* @__PURE__ */ t.createElement("div", {
101
+ id: B,
102
+ className: "label-container"
103
+ }, C), /* @__PURE__ */ t.createElement("div", {
104
+ role: "group",
105
+ "aria-label": M,
106
+ "aria-labelledby": J,
107
+ className: `phone-input-container-se-design-main ${r ? "error" : ""}`,
108
+ ref: U
109
+ }, /* @__PURE__ */ t.createElement("div", {
110
+ className: "phone-input-container-se-design"
111
+ }, /* @__PURE__ */ t.createElement("button", {
112
+ ref: F,
113
+ type: "button",
114
+ className: `phone-input-container-se-design-country-code focus-outline rounded ${a ? "cursor-not-allowed opacity-60" : ""}`,
115
+ onClick: D,
116
+ onKeyDown: re,
117
+ "aria-haspopup": "listbox",
118
+ "aria-expanded": n,
119
+ "aria-controls": n ? K : void 0,
120
+ "aria-label": `Select country code. Current: ${b?.name} ${b?.dial_code}`,
121
+ disabled: a,
122
+ "data-automation-id": "country-code-selector"
123
+ }, /* @__PURE__ */ t.createElement("img", {
124
+ src: `https://flagcdn.com/${b?.code.toLowerCase()}.svg`,
125
+ alt: "",
126
+ "aria-hidden": "true",
127
+ width: "16"
128
+ }), /* @__PURE__ */ t.createElement("span", null, b?.dial_code), /* @__PURE__ */ t.createElement(T, {
129
+ name: "chevron",
130
+ className: n ? "rotate-180" : "",
131
+ "aria-hidden": "true"
132
+ })), /* @__PURE__ */ t.createElement("span", {
133
+ className: "divider",
134
+ "aria-hidden": "true"
135
+ }), /* @__PURE__ */ t.createElement("input", c({
136
+ id: W,
137
+ type: "tel",
138
+ placeholder: "Enter phone number",
139
+ className: `phone-input-container-se-design-phone-number-input ${a ? "disabled" : ""}`,
140
+ onChange: (e) => oe(e.target.value),
141
+ value: Q,
142
+ pattern: "[0-9]*",
143
+ disabled: a,
144
+ "aria-invalid": r || void 0
145
+ }, ae, {
146
+ "data-automation-id": "phone-number-input-field"
147
+ }))), n && /* @__PURE__ */ t.createElement("div", c({}, Z, {
148
+ className: "phone-input-container-se-design-country-code-list",
149
+ "aria-label": "Select country",
150
+ "data-automation-id": "country-code-list"
151
+ }), /* @__PURE__ */ t.createElement("div", {
152
+ className: "search-input-wrapper"
153
+ }, /* @__PURE__ */ t.createElement(T, {
154
+ name: "search",
155
+ className: "search-icon",
156
+ "aria-hidden": "true"
157
+ }), /* @__PURE__ */ t.createElement("input", c({
158
+ ref: O
159
+ }, Y, {
160
+ type: "text",
161
+ placeholder: "Search countries",
162
+ className: "phone-input-container-se-design-country-code-list-item-input",
163
+ onChange: ne,
164
+ value: G,
165
+ "aria-label": "Search countries",
166
+ "data-automation-id": "country-code-search-input"
167
+ }))), w.length > 0 ? w.map((e, o) => {
168
+ const S = ee(o, e.dial_code === v);
169
+ return /* @__PURE__ */ t.createElement("div", c({
170
+ key: e.code
171
+ }, S, {
172
+ className: `phone-input-container-se-design-country-code-list-item ${te === o ? "highlighted" : ""} ${e.dial_code === v ? "selected" : ""}`,
173
+ onClick: () => {
174
+ p.current = !0, N(e.dial_code);
175
+ },
176
+ onMouseEnter: () => H(o)
177
+ }), /* @__PURE__ */ t.createElement("img", {
178
+ src: `https://flagcdn.com/${e.code.toLowerCase()}.svg`,
179
+ alt: "",
180
+ "aria-hidden": "true",
181
+ width: "16"
182
+ }), /* @__PURE__ */ t.createElement("span", null, e.name), /* @__PURE__ */ t.createElement("span", null, "(", e.dial_code, ")"));
183
+ }) : /* @__PURE__ */ t.createElement("div", {
184
+ className: "phone-input-container-se-design-country-code-list-item-no-results",
185
+ role: "status"
186
+ }, "No results found"))), r && /* @__PURE__ */ t.createElement("div", {
187
+ id: V,
188
+ className: "error-message",
189
+ role: "alert"
190
+ }, l));
37
191
  };
38
192
  export {
39
- m as CircularProgressBar
193
+ fe as PhoneInput
40
194
  };
41
195
  //# sourceMappingURL=index45.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index45.js","sources":["../src/components/CircularProgressBar/index.tsx"],"sourcesContent":["import React from 'react';\n\ninterface CircularProgressBarProps {\n progress: number;\n backgroundColor?: string;\n progressColor?: string;\n size?: number;\n strokeWidth?: number;\n}\n\nexport const CircularProgressBar = ({\n progress,\n backgroundColor = '#E8E8E8',\n progressColor = '#0066FF',\n size = 40,\n strokeWidth = 4\n}: CircularProgressBarProps) => {\n const radius = (size - strokeWidth) / 2;\n const circumference = radius * 2 * Math.PI;\n const strokeDashoffset = circumference - (progress / 100) * circumference;\n\n return (\n <svg width={size} height={size} style={{ transform: 'rotate(-90deg)' }}>\n {/* Background circle */}\n <circle cx={size / 2} cy={size / 2} r={radius} stroke={backgroundColor} strokeWidth={strokeWidth} fill=\"none\" />\n {/* Progress circle */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={progressColor}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n fill=\"none\"\n strokeLinecap=\"round\"\n style={{ transition: 'stroke-dashoffset 0.3s ease' }}\n />\n </svg>\n );\n};\n"],"names":["CircularProgressBar","progress","backgroundColor","progressColor","size","strokeWidth","radius","circumference","Math","PI","strokeDashoffset","React","createElement","width","height","style","transform","cx","cy","r","stroke","fill","strokeDasharray","strokeLinecap","transition"],"mappings":";AAUO,MAAMA,IAAsBA,CAAC;AAAA,EAClCC,UAAAA;AAAAA,EACAC,iBAAAA,IAAkB;AAAA,EAClBC,eAAAA,IAAgB;AAAA,EAChBC,MAAAA,IAAO;AAAA,EACPC,aAAAA,IAAc;AACU,MAAM;AAC9B,QAAMC,KAAUF,IAAOC,KAAe,GAChCE,IAAgBD,IAAS,IAAIE,KAAKC,IAClCC,IAAmBH,IAAiBN,IAAW,MAAOM;AAE5D,SACEI,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKC,OAAOT;AAAAA,IAAMU,QAAQV;AAAAA,IAAMW,OAAO;AAAA,MAAEC,WAAW;AAAA,IAAA;AAAA,EAAiB,GAEnEL,gBAAAA,EAAAC,cAAA,UAAA;AAAA,IAAQK,IAAIb,IAAO;AAAA,IAAGc,IAAId,IAAO;AAAA,IAAGe,GAAGb;AAAAA,IAAQc,QAAQlB;AAAAA,IAAiBG,aAAAA;AAAAA,IAA0BgB,MAAK;AAAA,EAAA,CAAQ,GAE/GV,gBAAAA,EAAAC,cAAA,UAAA;AAAA,IACEK,IAAIb,IAAO;AAAA,IACXc,IAAId,IAAO;AAAA,IACXe,GAAGb;AAAAA,IACHc,QAAQjB;AAAAA,IACRE,aAAAA;AAAAA,IACAiB,iBAAiBf;AAAAA,IACjBG,kBAAAA;AAAAA,IACAW,MAAK;AAAA,IACLE,eAAc;AAAA,IACdR,OAAO;AAAA,MAAES,YAAY;AAAA,IAAA;AAAA,EAA8B,CACpD,CACE;AAET;"}
1
+ {"version":3,"file":"index45.js","sources":["../src/components/PhoneInput/index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport './style.scss';\nimport countriesInfoJson from './countriesInfo.json';\nimport { Icon } from '../Icon';\nimport { useStableId } from '../../utils/useStableId';\nimport { getA11yNameAttributes, useCombobox } from '../../utils/a11y';\n\nexport interface PhoneInputProps {\n onCountrycodeChange: (countryCode: string) => void;\n onNumberChange: (number: string) => void;\n error?: boolean;\n errorMessage?: string;\n value?: {\n countryCode: string;\n number: string;\n };\n label?: string;\n automationId?: string;\n /**\n * Accessible label for the entire phone input group.\n * Provides context for screen readers (e.g., \"Two-step verification phone number for signer 1\").\n * Takes precedence over label prop for screen readers (visual label remains unchanged).\n */\n ariaLabel?: string;\n /**\n * ID(s) of element(s) that label this input (for external labels).\n * Highest precedence - use when label is rendered outside the component.\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) providing additional description.\n */\n ariaDescribedBy?: string;\n /**\n * Whether the input is disabled\n */\n disabled?: boolean;\n}\n\nexport const PhoneInput: React.FC<PhoneInputProps> = ({\n onCountrycodeChange,\n onNumberChange,\n error,\n errorMessage,\n value,\n label,\n automationId = '',\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n disabled = false\n}) => {\n const [countryCode, setCountryCode] = useState(value?.countryCode || countriesInfoJson[0].dial_code);\n const [displaySelectCountryCode, setDisplaySelectCountryCode] = useState(false);\n const [countriesInfo, setCountriesInfo] = useState(countriesInfoJson);\n const [searchValue, setSearchValue] = useState('');\n const [enteredNumber, setEnteredNumber] = useState('');\n const containerRef = useRef<HTMLDivElement>(null);\n const countryButtonRef = useRef<HTMLButtonElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const restoreFocusToButtonRef = useRef(false);\n\n // Generate stable IDs for ARIA relationships\n const labelId = useStableId(automationId, 'phone-label');\n const listboxId = useStableId(automationId, 'phone-listbox');\n const phoneInputId = useStableId(automationId, 'phone-input');\n const errorId = useStableId(automationId, 'phone-error');\n\n const countryInfo = countriesInfoJson.find((country) => country.dial_code === countryCode);\n\n // Close dropdown and reset state\n const closeDropdown = useCallback(() => {\n setDisplaySelectCountryCode(false);\n setSearchValue('');\n setCountriesInfo(countriesInfoJson);\n }, []);\n\n const handleCountryCodeSelect = useCallback(\n (country: string) => {\n if (country) {\n setCountryCode(country);\n onCountrycodeChange(country);\n }\n closeDropdown();\n // Focus return is handled by useEffect that watches displaySelectCountryCode\n },\n [onCountrycodeChange, closeDropdown]\n );\n\n const handleSelectFromDropdown = useCallback(\n (country: typeof countriesInfoJson[0]) => {\n restoreFocusToButtonRef.current = true;\n handleCountryCodeSelect(country.dial_code);\n },\n [handleCountryCodeSelect]\n );\n\n // Use comprehensive useCombobox hook for country search\n const {\n containerProps,\n inputProps: comboboxInputProps,\n listboxProps,\n getOptionProps,\n highlightedIndex,\n setHighlightedIndex\n } = useCombobox({\n items: countriesInfo,\n isOpen: displaySelectCountryCode,\n onOpenChange: setDisplaySelectCountryCode,\n onSelect: handleSelectFromDropdown,\n listboxId\n });\n\n const handleCountryCodeSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\n const searchVal = event.target.value;\n setSearchValue(searchVal);\n setHighlightedIndex(-1);\n const filteredCountries = countriesInfoJson.filter(\n (country) =>\n country.name.toLowerCase().includes(searchVal.toLowerCase()) ||\n country.dial_code.toLowerCase().includes(searchVal.toLowerCase()) ||\n country.code.toLowerCase().includes(searchVal.toLowerCase())\n );\n setCountriesInfo(filteredCountries);\n };\n\n // Return focus to button when dropdown closes\n const prevDisplaySelectCountryCodeRef = useRef(displaySelectCountryCode);\n useEffect(() => {\n let rafId: number | null = null;\n // If dropdown was open and is now closed, return focus to button\n // ONLY when the close was triggered from within the component (Escape/selection),\n // not when the user moved focus outside (focus-out dismissal).\n if (prevDisplaySelectCountryCodeRef.current && !displaySelectCountryCode && restoreFocusToButtonRef.current) {\n rafId = requestAnimationFrame(() => {\n countryButtonRef.current?.focus();\n });\n }\n if (prevDisplaySelectCountryCodeRef.current && !displaySelectCountryCode) {\n restoreFocusToButtonRef.current = false;\n }\n prevDisplaySelectCountryCodeRef.current = displaySelectCountryCode;\n return () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [displaySelectCountryCode]);\n\n useEffect(() => {\n if (value) {\n setCountryCode(value.countryCode);\n setEnteredNumber(value.number);\n }\n }, [value]);\n\n // Focus search input when dropdown opens\n useEffect(() => {\n let rafId: number | null = null;\n if (displaySelectCountryCode) {\n rafId = requestAnimationFrame(() => {\n searchInputRef.current?.focus();\n });\n }\n return () => {\n if (rafId !== null) {\n cancelAnimationFrame(rafId);\n }\n };\n }, [displaySelectCountryCode]);\n\n const handleEnteredNumberChange = (val: string) => {\n const numericValue = val.replace(/\\D/g, ''); // Remove non-numeric characters\n setEnteredNumber(numericValue);\n onNumberChange(numericValue);\n };\n\n const toggleDropdown = useCallback(() => {\n if (disabled) return;\n setDisplaySelectCountryCode((prev) => !prev);\n }, [disabled]);\n\n const handleCountryButtonKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n toggleDropdown();\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!displaySelectCountryCode) {\n setDisplaySelectCountryCode(true);\n }\n break;\n // Escape is handled by useDismissOnEscape hook\n }\n },\n [disabled, displaySelectCountryCode, toggleDropdown]\n );\n\n // Group and phone input label logic (precedence: ariaLabelledBy > ariaLabel > label > fallback):\n // 1. ariaLabelledBy: external label reference (highest priority)\n // 2. ariaLabel: programmatic label\n // 3. label: internal visible label (uses aria-labelledby={labelId})\n // 4. fallback: \"Phone number\"\n const groupAriaLabelledBy = ariaLabelledBy || (!ariaLabel && label ? labelId : undefined);\n const groupAriaLabel = !ariaLabelledBy ? (ariaLabel || (!label ? 'Phone number' : undefined)) : undefined;\n \n // Build ARIA name attributes for phone input\n // Phone input directly references its label source (not through group) for reliability\n const phoneInputA11yProps = getA11yNameAttributes({\n ariaLabelledBy: groupAriaLabelledBy,\n ariaLabel: groupAriaLabel,\n ariaDescribedBy: error ? errorId : ariaDescribedBy\n });\n\n return (\n <div \n className=\"phone-input-container-se-design-main-container\" \n data-automation-id={automationId}\n {...containerProps}\n onKeyDownCapture={(e) => {\n if (e.key === 'Escape' && displaySelectCountryCode) {\n restoreFocusToButtonRef.current = true;\n }\n containerProps.onKeyDownCapture(e);\n }}\n >\n {label && (\n <div id={labelId} className=\"label-container\">\n {label}\n </div>\n )}\n <div \n role=\"group\"\n aria-label={groupAriaLabel}\n aria-labelledby={groupAriaLabelledBy}\n className={`phone-input-container-se-design-main ${error ? 'error' : ''}`} \n ref={containerRef}\n >\n <div className=\"phone-input-container-se-design\">\n <button\n ref={countryButtonRef}\n type=\"button\"\n className={`phone-input-container-se-design-country-code focus-outline rounded ${disabled ? 'cursor-not-allowed opacity-60' : ''}`}\n onClick={toggleDropdown}\n onKeyDown={handleCountryButtonKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={displaySelectCountryCode}\n aria-controls={displaySelectCountryCode ? listboxId : undefined}\n aria-label={`Select country code. Current: ${countryInfo?.name} ${countryInfo?.dial_code}`}\n disabled={disabled}\n data-automation-id=\"country-code-selector\"\n >\n <img\n src={`https://flagcdn.com/${countryInfo?.code.toLowerCase()}.svg`}\n alt=\"\"\n aria-hidden=\"true\"\n width=\"16\"\n />\n <span>{countryInfo?.dial_code}</span>\n <Icon\n name=\"chevron\"\n className={!displaySelectCountryCode ? '' : 'rotate-180'}\n aria-hidden=\"true\"\n />\n </button>\n <span className=\"divider\" aria-hidden=\"true\" />\n <input\n id={phoneInputId}\n type=\"tel\"\n placeholder=\"Enter phone number\"\n className={`phone-input-container-se-design-phone-number-input ${disabled ? 'disabled' : ''}`}\n onChange={(event) => handleEnteredNumberChange(event.target.value)}\n value={enteredNumber}\n pattern=\"[0-9]*\"\n disabled={disabled}\n aria-invalid={error || undefined}\n {...phoneInputA11yProps}\n data-automation-id=\"phone-number-input-field\"\n />\n </div>\n\n {displaySelectCountryCode && (\n <div\n {...listboxProps}\n className=\"phone-input-container-se-design-country-code-list\"\n aria-label=\"Select country\"\n data-automation-id=\"country-code-list\"\n >\n <div className=\"search-input-wrapper\">\n <Icon name=\"search\" className=\"search-icon\" aria-hidden=\"true\" />\n <input\n ref={searchInputRef}\n {...comboboxInputProps}\n type=\"text\"\n placeholder=\"Search countries\"\n className=\"phone-input-container-se-design-country-code-list-item-input\"\n onChange={handleCountryCodeSearch}\n value={searchValue}\n aria-label=\"Search countries\"\n data-automation-id=\"country-code-search-input\"\n />\n </div>\n {countriesInfo.length > 0 ? (\n countriesInfo.map((country, index) => {\n const optionProps = getOptionProps(index, country.dial_code === countryCode);\n return (\n <div\n key={country.code}\n {...optionProps}\n className={`phone-input-container-se-design-country-code-list-item ${\n highlightedIndex === index ? 'highlighted' : ''\n } ${country.dial_code === countryCode ? 'selected' : ''}`}\n onClick={() => {\n restoreFocusToButtonRef.current = true;\n handleCountryCodeSelect(country.dial_code);\n }}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n <img\n src={`https://flagcdn.com/${country.code.toLowerCase()}.svg`}\n alt=\"\"\n aria-hidden=\"true\"\n width=\"16\"\n />\n <span>{country.name}</span>\n <span>({country.dial_code})</span>\n </div>\n );\n })\n ) : (\n <div className=\"phone-input-container-se-design-country-code-list-item-no-results\" role=\"status\">\n No results found\n </div>\n )}\n </div>\n )}\n </div>\n {error && (\n <div id={errorId} className=\"error-message\" role=\"alert\">\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n"],"names":["PhoneInput","onCountrycodeChange","onNumberChange","error","errorMessage","value","label","automationId","ariaLabel","ariaLabelledBy","ariaDescribedBy","disabled","countryCode","setCountryCode","useState","countriesInfoJson","dial_code","displaySelectCountryCode","setDisplaySelectCountryCode","countriesInfo","setCountriesInfo","searchValue","setSearchValue","enteredNumber","setEnteredNumber","containerRef","useRef","countryButtonRef","searchInputRef","restoreFocusToButtonRef","labelId","useStableId","listboxId","phoneInputId","errorId","countryInfo","find","country","closeDropdown","useCallback","handleCountryCodeSelect","handleSelectFromDropdown","current","containerProps","inputProps","comboboxInputProps","listboxProps","getOptionProps","highlightedIndex","setHighlightedIndex","useCombobox","items","isOpen","onOpenChange","onSelect","handleCountryCodeSearch","event","searchVal","target","filteredCountries","filter","name","toLowerCase","includes","code","prevDisplaySelectCountryCodeRef","useEffect","rafId","requestAnimationFrame","focus","cancelAnimationFrame","number","handleEnteredNumberChange","val","numericValue","replace","toggleDropdown","prev","handleCountryButtonKeyDown","e","key","preventDefault","groupAriaLabelledBy","undefined","groupAriaLabel","phoneInputA11yProps","getA11yNameAttributes","React","createElement","_extends","className","onKeyDownCapture","id","role","ref","type","onClick","onKeyDown","src","alt","width","Icon","placeholder","onChange","pattern","length","map","index","optionProps","onMouseEnter"],"mappings":";;;;;;;;;;;;;;;;AAuCO,MAAMA,KAAwCA,CAAC;AAAA,EACpDC,qBAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,cAAAA,IAAe;AAAA,EACfC,WAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAC,UAAAA,IAAW;AACb,MAAM;AACJ,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAST,GAAOO,eAAeG,EAAkB,CAAC,EAAEC,SAAS,GAC7F,CAACC,GAA0BC,CAA2B,IAAIJ,EAAS,EAAK,GACxE,CAACK,GAAeC,CAAgB,IAAIN,EAASC,CAAiB,GAC9D,CAACM,GAAaC,CAAc,IAAIR,EAAS,EAAE,GAC3C,CAACS,GAAeC,CAAgB,IAAIV,EAAS,EAAE,GAC/CW,IAAeC,EAAuB,IAAI,GAC1CC,IAAmBD,EAA0B,IAAI,GACjDE,IAAiBF,EAAyB,IAAI,GAC9CG,IAA0BH,EAAO,EAAK,GAGtCI,IAAUC,EAAYxB,GAAc,aAAa,GACjDyB,IAAYD,EAAYxB,GAAc,eAAe,GACrD0B,IAAeF,EAAYxB,GAAc,aAAa,GACtD2B,IAAUH,EAAYxB,GAAc,aAAa,GAEjD4B,IAAcpB,EAAkBqB,KAAMC,CAAAA,MAAYA,EAAQrB,cAAcJ,CAAW,GAGnF0B,IAAgBC,EAAY,MAAM;AACtCrB,IAAAA,EAA4B,EAAK,GACjCI,EAAe,EAAE,GACjBF,EAAiBL,CAAiB;AAAA,EACpC,GAAG,CAAA,CAAE,GAECyB,IAA0BD,EAC9B,CAACF,MAAoB;AACnB,IAAIA,MACFxB,EAAewB,CAAO,GACtBpC,EAAoBoC,CAAO,IAE7BC,EAAAA;AAAAA,EAEF,GACA,CAACrC,GAAqBqC,CAAa,CACrC,GAEMG,IAA2BF,EAC/B,CAACF,MAAyC;AACxCR,IAAAA,EAAwBa,UAAU,IAClCF,EAAwBH,EAAQrB,SAAS;AAAA,EAC3C,GACA,CAACwB,CAAuB,CAC1B,GAGM;AAAA,IACJG,gBAAAA;AAAAA,IACAC,YAAYC;AAAAA,IACZC,cAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAC,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,EAAAA,IACEC,GAAY;AAAA,IACdC,OAAOhC;AAAAA,IACPiC,QAAQnC;AAAAA,IACRoC,cAAcnC;AAAAA,IACdoC,UAAUb;AAAAA,IACVT,WAAAA;AAAAA,EAAAA,CACD,GAEKuB,KAA0BA,CAACC,MAA+C;AAC9E,UAAMC,IAAYD,EAAME,OAAOrD;AAC/BiB,IAAAA,EAAemC,CAAS,GACxBR,EAAoB,EAAE;AACtB,UAAMU,IAAoB5C,EAAkB6C,OACzCvB,CAAAA,MACCA,EAAQwB,KAAKC,YAAAA,EAAcC,SAASN,EAAUK,YAAAA,CAAa,KAC3DzB,EAAQrB,UAAU8C,YAAAA,EAAcC,SAASN,EAAUK,YAAAA,CAAa,KAChEzB,EAAQ2B,KAAKF,YAAAA,EAAcC,SAASN,EAAUK,YAAAA,CAAa,CAC/D;AACA1C,IAAAA,EAAiBuC,CAAiB;AAAA,EACpC,GAGMM,IAAkCvC,EAAOT,CAAwB;AACvEiD,EAAAA,EAAU,MAAM;AACd,QAAIC,IAAuB;AAI3B,WAAIF,EAAgCvB,WAAW,CAACzB,KAA4BY,EAAwBa,YAClGyB,IAAQC,sBAAsB,MAAM;AAClCzC,MAAAA,EAAiBe,SAAS2B,MAAAA;AAAAA,IAC5B,CAAC,IAECJ,EAAgCvB,WAAW,CAACzB,MAC9CY,EAAwBa,UAAU,KAEpCuB,EAAgCvB,UAAUzB,GACnC,MAAM;AACX,MAAIkD,MAAU,QACZG,qBAAqBH,CAAK;AAAA,IAE9B;AAAA,EACF,GAAG,CAAClD,CAAwB,CAAC,GAE7BiD,EAAU,MAAM;AACd,IAAI7D,MACFQ,EAAeR,EAAMO,WAAW,GAChCY,EAAiBnB,EAAMkE,MAAM;AAAA,EAEjC,GAAG,CAAClE,CAAK,CAAC,GAGV6D,EAAU,MAAM;AACd,QAAIC,IAAuB;AAC3B,WAAIlD,MACFkD,IAAQC,sBAAsB,MAAM;AAClCxC,MAAAA,EAAec,SAAS2B,MAAAA;AAAAA,IAC1B,CAAC,IAEI,MAAM;AACX,MAAIF,MAAU,QACZG,qBAAqBH,CAAK;AAAA,IAE9B;AAAA,EACF,GAAG,CAAClD,CAAwB,CAAC;AAE7B,QAAMuD,KAA4BA,CAACC,MAAgB;AACjD,UAAMC,IAAeD,EAAIE,QAAQ,OAAO,EAAE;AAC1CnD,IAAAA,EAAiBkD,CAAY,GAC7BxE,EAAewE,CAAY;AAAA,EAC7B,GAEME,IAAiBrC,EAAY,MAAM;AACvC,IAAI5B,KACJO,EAA6B2D,CAAAA,MAAS,CAACA,CAAI;AAAA,EAC7C,GAAG,CAAClE,CAAQ,CAAC,GAEPmE,KAA6BvC,EACjC,CAACwC,MAA2B;AAC1B,QAAIpE,CAAAA;AAEJ,cAAQoE,EAAEC,KAAAA;AAAAA,QACR,KAAK;AAAA,QACL,KAAK;AACHD,YAAEE,eAAAA,GACFL,EAAAA;AACA;AAAA,QACF,KAAK;AACHG,YAAEE,eAAAA,GACGhE,KACHC,EAA4B,EAAI;AAElC;AAAA,MAAA;AAAA,EAGN,GACA,CAACP,GAAUM,GAA0B2D,CAAc,CACrD,GAOMM,IAAsBzE,MAAmB,CAACD,KAAaF,IAAQwB,IAAUqD,SACzEC,IAAkB3E,IAAwE0E,SAAtD3E,MAAeF,IAAyB6E,SAAjB,iBAI3DE,KAAsBC,GAAsB;AAAA,IAChD7E,gBAAgByE;AAAAA,IAChB1E,WAAW4E;AAAAA,IACX1E,iBAAiBP,IAAQ+B,IAAUxB;AAAAA,EAAAA,CACpC;AAED,SACE6E,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IACEC,WAAU;AAAA,IACV,sBAAoBnF;AAAAA,EAAAA,GAChBoC,GAAc;AAAA,IAClBgD,kBAAmBZ,CAAAA,MAAM;AACvB,MAAIA,EAAEC,QAAQ,YAAY/D,MACxBY,EAAwBa,UAAU,KAEpCC,EAAegD,iBAAiBZ,CAAC;AAAA,IACnC;AAAA,EAAA,CAAE,GAEDzE,KACCiF,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKI,IAAI9D;AAAAA,IAAS4D,WAAU;AAAA,EAAA,GACzBpF,CACE,GAEPiF,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEK,MAAK;AAAA,IACL,cAAYT;AAAAA,IACZ,mBAAiBF;AAAAA,IACjBQ,WAAW,wCAAwCvF,IAAQ,UAAU,EAAE;AAAA,IACvE2F,KAAKrE;AAAAA,EAAAA,GAEL8D,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKE,WAAU;AAAA,EAAA,GACbH,gBAAAA,EAAAC,cAAA,UAAA;AAAA,IACEM,KAAKnE;AAAAA,IACLoE,MAAK;AAAA,IACLL,WAAW,sEAAsE/E,IAAW,kCAAkC,EAAE;AAAA,IAChIqF,SAASpB;AAAAA,IACTqB,WAAWnB;AAAAA,IACX,iBAAc;AAAA,IACd,iBAAe7D;AAAAA,IACf,iBAAeA,IAA2Be,IAAYmD;AAAAA,IACtD,cAAY,iCAAiChD,GAAa0B,IAAI,IAAI1B,GAAanB,SAAS;AAAA,IACxFL,UAAAA;AAAAA,IACA,sBAAmB;AAAA,EAAA,GAEnB4E,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEU,KAAK,uBAAuB/D,GAAa6B,KAAKF,aAAa;AAAA,IAC3DqC,KAAI;AAAA,IACJ,eAAY;AAAA,IACZC,OAAM;AAAA,EAAA,CACP,GACDb,gBAAAA,EAAAC,cAAA,QAAA,MAAOrD,GAAanB,SAAgB,GACpCuE,gBAAAA,EAAAC,cAACa,GAAI;AAAA,IACHxC,MAAK;AAAA,IACL6B,WAAYzE,IAAgC,eAAL;AAAA,IACvC,eAAY;AAAA,EAAA,CACb,CACK,GACRsE,gBAAAA,EAAAC,cAAA,QAAA;AAAA,IAAME,WAAU;AAAA,IAAU,eAAY;AAAA,EAAA,CAAQ,GAC9CH,gBAAAA,EAAAC,uBAAAC,EAAA;AAAA,IACEG,IAAI3D;AAAAA,IACJ8D,MAAK;AAAA,IACLO,aAAY;AAAA,IACZZ,WAAW,sDAAsD/E,IAAW,aAAa,EAAE;AAAA,IAC3F4F,UAAW/C,CAAAA,MAAUgB,GAA0BhB,EAAME,OAAOrD,KAAK;AAAA,IACjEA,OAAOkB;AAAAA,IACPiF,SAAQ;AAAA,IACR7F,UAAAA;AAAAA,IACA,gBAAcR,KAASgF;AAAAA,EAAAA,GACnBE,IAAmB;AAAA,IACvB,sBAAmB;AAAA,EAAA,CAA0B,CAC9C,CACE,GAEJpE,KACCsE,gBAAAA,EAAAC,cAAA,OAAAC,EAAA,CAAA,GACM3C,GAAY;AAAA,IAChB4C,WAAU;AAAA,IACV,cAAW;AAAA,IACX,sBAAmB;AAAA,EAAA,CAAmB,GAEtCH,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKE,WAAU;AAAA,EAAA,GACbH,gBAAAA,EAAAC,cAACa,GAAI;AAAA,IAACxC,MAAK;AAAA,IAAS6B,WAAU;AAAA,IAAc,eAAY;AAAA,EAAA,CAAQ,GAChEH,gBAAAA,EAAAC,uBAAAC,EAAA;AAAA,IACEK,KAAKlE;AAAAA,EAAAA,GACDiB,GAAkB;AAAA,IACtBkD,MAAK;AAAA,IACLO,aAAY;AAAA,IACZZ,WAAU;AAAA,IACVa,UAAUhD;AAAAA,IACVlD,OAAOgB;AAAAA,IACP,cAAW;AAAA,IACX,sBAAmB;AAAA,EAAA,CAA2B,CAC/C,CACE,GACJF,EAAcsF,SAAS,IACtBtF,EAAcuF,IAAI,CAACrE,GAASsE,MAAU;AACpC,UAAMC,IAAc7D,GAAe4D,GAAOtE,EAAQrB,cAAcJ,CAAW;AAC3E,WACE2E,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,MACET,KAAK3C,EAAQ2B;AAAAA,IAAAA,GACT4C,GAAW;AAAA,MACflB,WAAW,0DACT1C,OAAqB2D,IAAQ,gBAAgB,EAAE,IAC7CtE,EAAQrB,cAAcJ,IAAc,aAAa,EAAE;AAAA,MACvDoF,SAASA,MAAM;AACbnE,QAAAA,EAAwBa,UAAU,IAClCF,EAAwBH,EAAQrB,SAAS;AAAA,MAC3C;AAAA,MACA6F,cAAcA,MAAM5D,EAAoB0D,CAAK;AAAA,IAAA,CAAE,GAE/CpB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEU,KAAK,uBAAuB7D,EAAQ2B,KAAKF,aAAa;AAAA,MACtDqC,KAAI;AAAA,MACJ,eAAY;AAAA,MACZC,OAAM;AAAA,IAAA,CACP,GACDb,gBAAAA,EAAAC,cAAA,QAAA,MAAOnD,EAAQwB,IAAW,GAC1B0B,gBAAAA,EAAAC,cAAA,QAAA,MAAM,KAAEnD,EAAQrB,WAAU,GAAO,CAC9B;AAAA,EAET,CAAC,IAEDuE,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKE,WAAU;AAAA,IAAoEG,MAAK;AAAA,EAAA,GAAS,kBAE5F,CAEJ,CAEJ,GACJ1F,KACCoF,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKI,IAAI1D;AAAAA,IAASwD,WAAU;AAAA,IAAgBG,MAAK;AAAA,EAAA,GAC9CzF,CACE,CAEJ;AAET;"}
package/dist/index46.js CHANGED
@@ -1,36 +1,41 @@
1
- import d from "react";
2
- const o = ["var(--color-green-500)", "var(--color-blue-500)", "var(--color-purple-600)", "var(--color-red-400)", "var(--color-yellow-600)"], f = ({
3
- size: r = 40,
4
- text: a,
5
- textColor: l = "var(--color-white)",
6
- backgroundColor: t = "",
7
- className: n = "",
8
- onClick: e,
9
- automationId: i = ""
1
+ import o from "react";
2
+ const m = ({
3
+ progress: a,
4
+ backgroundColor: n = "#E8E8E8",
5
+ progressColor: s = "#0066FF",
6
+ size: e = 40,
7
+ strokeWidth: r = 4
10
8
  }) => {
11
- const c = a?.split(" ")?.map((u) => u[0])?.join("")?.toUpperCase()?.slice(0, 2), s = () => t || o[Math.floor(Math.random() * o.length)];
12
- return /* @__PURE__ */ d.createElement("div", {
13
- className: `
14
- se-design-avatar
15
- flex items-center justify-center
16
- rounded-full font-medium
17
- ${e ? "cursor-pointer" : "cursor-default"}
18
- ${n}
19
- `,
20
- onClick: e,
21
- "data-automation-id": i,
9
+ const t = (e - r) / 2, c = t * 2 * Math.PI, l = c - a / 100 * c;
10
+ return /* @__PURE__ */ o.createElement("svg", {
11
+ width: e,
12
+ height: e,
22
13
  style: {
23
- width: r,
24
- height: r,
25
- minWidth: 20,
26
- minHeight: 20,
27
- backgroundColor: s(),
28
- color: l,
29
- fontSize: `${r * 0.4}px`
14
+ transform: "rotate(-90deg)"
30
15
  }
31
- }, c);
16
+ }, /* @__PURE__ */ o.createElement("circle", {
17
+ cx: e / 2,
18
+ cy: e / 2,
19
+ r: t,
20
+ stroke: n,
21
+ strokeWidth: r,
22
+ fill: "none"
23
+ }), /* @__PURE__ */ o.createElement("circle", {
24
+ cx: e / 2,
25
+ cy: e / 2,
26
+ r: t,
27
+ stroke: s,
28
+ strokeWidth: r,
29
+ strokeDasharray: c,
30
+ strokeDashoffset: l,
31
+ fill: "none",
32
+ strokeLinecap: "round",
33
+ style: {
34
+ transition: "stroke-dashoffset 0.3s ease"
35
+ }
36
+ }));
32
37
  };
33
38
  export {
34
- f as Avatar
39
+ m as CircularProgressBar
35
40
  };
36
41
  //# sourceMappingURL=index46.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index46.js","sources":["../src/components/Avatar/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nexport type AvatarProps = {\n size?: number;\n text: string;\n textColor?: string;\n backgroundColor?: string;\n className?: string;\n onClick?: () => void;\n automationId?: string;\n};\n\nconst AVATAR_COLORS = [\n 'var(--color-green-500)',\n 'var(--color-blue-500)',\n 'var(--color-purple-600)',\n 'var(--color-red-400)',\n 'var(--color-yellow-600)'\n];\n\nexport const Avatar: FC<AvatarProps> = ({\n size = 40,\n text,\n textColor = 'var(--color-white)',\n backgroundColor = '',\n className = '',\n onClick,\n automationId = ''\n}) => {\n const initials = text\n ?.split(' ')\n ?.map((word) => word[0])\n ?.join('')\n ?.toUpperCase()\n ?.slice(0, 2);\n\n const getBackgroundColor = () => {\n if (backgroundColor) {\n return backgroundColor;\n }\n return AVATAR_COLORS[Math.floor(Math.random() * AVATAR_COLORS.length)];\n };\n\n return (\n <div\n className={`\n se-design-avatar \n flex items-center justify-center \n rounded-full font-medium\n ${onClick ? 'cursor-pointer' : 'cursor-default'}\n ${className}\n `}\n onClick={onClick}\n data-automation-id={automationId}\n style={{\n width: size,\n height: size,\n minWidth: 20,\n minHeight: 20,\n backgroundColor: getBackgroundColor(),\n color: textColor,\n fontSize: `${size * 0.4}px`\n }}\n >\n {initials}\n </div>\n );\n};\n"],"names":["React__default","AVATAR_COLORS","Avatar","size","text","textColor","backgroundColor","className","onClick","automationId","initials","split","map","word","join","toUpperCase","slice","getBackgroundColor","Math","floor","random","length","React","createElement","style","width","height","minWidth","minHeight","color","fontSize"],"mappings":"AAYA,OAAAA,OAAA;AAAA,MAAMC,IAAgB,CACpB,0BACA,yBACA,2BACA,wBACA,yBAAyB,GAGdC,IAA0BA,CAAC;AAAA,EACtCC,MAAAA,IAAO;AAAA,EACPC,MAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,iBAAAA,IAAkB;AAAA,EAClBC,WAAAA,IAAY;AAAA,EACZC,SAAAA;AAAAA,EACAC,cAAAA,IAAe;AACjB,MAAM;AACJ,QAAMC,IAAWN,GACbO,MAAM,GAAG,GACTC,IAAKC,OAASA,EAAK,CAAC,CAAC,GACrBC,KAAK,EAAE,GACPC,eACAC,MAAM,GAAG,CAAC,GAERC,IAAqBA,MACrBX,KAGGL,EAAciB,KAAKC,MAAMD,KAAKE,WAAWnB,EAAcoB,MAAM,CAAC;AAGvE,SACEC,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEhB,WAAW;AAAA;AAAA;AAAA;AAAA,UAIPC,IAAU,mBAAmB,gBAAgB;AAAA,UAC7CD,CAAS;AAAA;AAAA,IAEbC,SAAAA;AAAAA,IACA,sBAAoBC;AAAAA,IACpBe,OAAO;AAAA,MACLC,OAAOtB;AAAAA,MACPuB,QAAQvB;AAAAA,MACRwB,UAAU;AAAA,MACVC,WAAW;AAAA,MACXtB,iBAAiBW,EAAAA;AAAAA,MACjBY,OAAOxB;AAAAA,MACPyB,UAAU,GAAG3B,IAAO,GAAG;AAAA,IAAA;AAAA,EACzB,GAECO,CACE;AAET;"}
1
+ {"version":3,"file":"index46.js","sources":["../src/components/CircularProgressBar/index.tsx"],"sourcesContent":["import React from 'react';\n\ninterface CircularProgressBarProps {\n progress: number;\n backgroundColor?: string;\n progressColor?: string;\n size?: number;\n strokeWidth?: number;\n}\n\nexport const CircularProgressBar = ({\n progress,\n backgroundColor = '#E8E8E8',\n progressColor = '#0066FF',\n size = 40,\n strokeWidth = 4\n}: CircularProgressBarProps) => {\n const radius = (size - strokeWidth) / 2;\n const circumference = radius * 2 * Math.PI;\n const strokeDashoffset = circumference - (progress / 100) * circumference;\n\n return (\n <svg width={size} height={size} style={{ transform: 'rotate(-90deg)' }}>\n {/* Background circle */}\n <circle cx={size / 2} cy={size / 2} r={radius} stroke={backgroundColor} strokeWidth={strokeWidth} fill=\"none\" />\n {/* Progress circle */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n stroke={progressColor}\n strokeWidth={strokeWidth}\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n fill=\"none\"\n strokeLinecap=\"round\"\n style={{ transition: 'stroke-dashoffset 0.3s ease' }}\n />\n </svg>\n );\n};\n"],"names":["CircularProgressBar","progress","backgroundColor","progressColor","size","strokeWidth","radius","circumference","Math","PI","strokeDashoffset","React","createElement","width","height","style","transform","cx","cy","r","stroke","fill","strokeDasharray","strokeLinecap","transition"],"mappings":";AAUO,MAAMA,IAAsBA,CAAC;AAAA,EAClCC,UAAAA;AAAAA,EACAC,iBAAAA,IAAkB;AAAA,EAClBC,eAAAA,IAAgB;AAAA,EAChBC,MAAAA,IAAO;AAAA,EACPC,aAAAA,IAAc;AACU,MAAM;AAC9B,QAAMC,KAAUF,IAAOC,KAAe,GAChCE,IAAgBD,IAAS,IAAIE,KAAKC,IAClCC,IAAmBH,IAAiBN,IAAW,MAAOM;AAE5D,SACEI,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKC,OAAOT;AAAAA,IAAMU,QAAQV;AAAAA,IAAMW,OAAO;AAAA,MAAEC,WAAW;AAAA,IAAA;AAAA,EAAiB,GAEnEL,gBAAAA,EAAAC,cAAA,UAAA;AAAA,IAAQK,IAAIb,IAAO;AAAA,IAAGc,IAAId,IAAO;AAAA,IAAGe,GAAGb;AAAAA,IAAQc,QAAQlB;AAAAA,IAAiBG,aAAAA;AAAAA,IAA0BgB,MAAK;AAAA,EAAA,CAAQ,GAE/GV,gBAAAA,EAAAC,cAAA,UAAA;AAAA,IACEK,IAAIb,IAAO;AAAA,IACXc,IAAId,IAAO;AAAA,IACXe,GAAGb;AAAAA,IACHc,QAAQjB;AAAAA,IACRE,aAAAA;AAAAA,IACAiB,iBAAiBf;AAAAA,IACjBG,kBAAAA;AAAAA,IACAW,MAAK;AAAA,IACLE,eAAc;AAAA,IACdR,OAAO;AAAA,MAAES,YAAY;AAAA,IAAA;AAAA,EAA8B,CACpD,CACE;AAET;"}
package/dist/index47.js CHANGED
@@ -1,152 +1,36 @@
1
- import o, { useState as F, useMemo as y, useEffect as g } from "react";
2
- import "./index3.js";
3
- import { Icon as w } from "./index5.js";
4
- import { MenuList as O } from "./index16.js";
5
- import { getA11yNameAttributes as _ } from "./index67.js";
6
- /* empty css */
7
- /* empty css */
8
- import "react-dom";
9
- import "./index15.js";
10
- import { Popover as $ } from "./index17.js";
11
- /* empty css */
12
- /* empty css */
13
- /* empty css */
14
- /* empty css */
15
- /* empty css */
16
- /* empty css */
17
- /* empty css */
18
- /* empty css */
19
- /* empty css */
20
- /* empty css */
21
- /* empty css */
22
- /* empty css */
23
- /* empty css */
24
- /* empty css */
25
- /* empty css */
26
- /* empty css */
27
- /* empty css */
28
- import { TabButton as j } from "./index207.js";
29
- import { useTabsA11y as K } from "./index208.js";
30
- /* empty css */
31
- /* empty css */
32
- /* empty css */
33
- /* empty css */
34
- /* empty css */
35
- /* empty css */
36
- import "./index58.js";
37
- /* empty css */
38
- /* empty css */
39
- import "./index62.js";
40
- /* empty css */
41
- function m() {
42
- return m = Object.assign ? Object.assign.bind() : function(a) {
43
- for (var t = 1; t < arguments.length; t++) {
44
- var n = arguments[t];
45
- for (var l in n) ({}).hasOwnProperty.call(n, l) && (a[l] = n[l]);
46
- }
47
- return a;
48
- }, m.apply(null, arguments);
49
- }
50
- const ke = ({
51
- defaultActiveNavigationItem: a,
52
- navigationItems: t,
53
- onNavigationItemChange: n,
54
- isCompactView: l = !1,
55
- keyboardActivationMode: E = "automatic",
56
- orientation: b = "horizontal",
57
- ariaLabel: N = "Sections",
58
- ariaLabelledBy: h,
59
- idBase: P = ""
1
+ import d from "react";
2
+ const o = ["var(--color-green-500)", "var(--color-blue-500)", "var(--color-purple-600)", "var(--color-red-400)", "var(--color-yellow-600)"], f = ({
3
+ size: r = 40,
4
+ text: a,
5
+ textColor: l = "var(--color-white)",
6
+ backgroundColor: t = "",
7
+ className: n = "",
8
+ onClick: e,
9
+ automationId: i = ""
60
10
  }) => {
61
- const T = a || t[0]?.id || "", [s, c] = F(T), k = y(() => t.filter((e) => !e.disabled).map((e) => e.id), [t]), {
62
- getTabProps: v,
63
- setFocusedTabId: p,
64
- handleKeyDown: S,
65
- getPanelId: u,
66
- getTabId: f
67
- } = K({
68
- itemIds: k,
69
- orientation: b,
70
- activeNavigationItem: s,
71
- idBase: P
72
- });
73
- g(() => {
74
- a && (c(a), p(a));
75
- }, [a, p]);
76
- const x = (e) => {
77
- e?.disabled || (c(e?.id), n?.(e?.id));
78
- }, B = (e) => {
79
- const r = t.find((i) => i.id === e);
80
- !r || r.disabled || (c(e), n?.(e));
81
- }, C = y(() => t.map((e) => {
82
- const r = e.id === s, i = r && e.panelHasFocusableContent === !1 ? 0 : void 0;
83
- return /* @__PURE__ */ o.createElement("div", {
84
- key: e.id,
85
- id: u(e.id),
86
- role: "tabpanel",
87
- "aria-labelledby": f(e.id),
88
- hidden: !r,
89
- tabIndex: i,
90
- className: `navigation-item-content ${r ? "block" : "hidden"}`
91
- }, r && e?.renderNavigationItemContent?.(e));
92
- }), [t, s, u, f]), D = t.find((e) => e.id === s);
93
- return /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", m({
94
- className: "se-design-navigation-bar flex items-center gap-4",
95
- "data-automation-id": "navigation-bar-container",
96
- role: "tablist",
97
- "aria-orientation": b
98
- }, _({
99
- ariaLabel: N,
100
- ariaLabelledBy: h
101
- })), !l && t.map((e) => {
102
- const r = s === e.id, i = e.disabled, d = v(e.id);
103
- return /* @__PURE__ */ o.createElement(j, {
104
- key: e.id,
105
- ref: d.ref,
106
- tabIndex: d.tabIndex,
107
- id: d.id,
108
- label: e.label,
109
- isSelected: r,
110
- isDisabled: i,
111
- panelId: d["aria-controls"],
112
- onClick: () => x(e),
113
- onFocus: () => {
114
- p(e.id), E === "automatic" && !i && B(e.id);
115
- },
116
- onKeyDown: S,
117
- className: `text-base ${i ? "text-[var(--color-gray-400)] cursor-not-allowed" : r ? "text-[var(--color-gray-900)] font-bold hover:cursor-pointer" : "text-[var(--color-gray-700)] font-normal hover:text-[var(--color-gray-900)] cursor-pointer"} focus-outline rounded-[6px]`,
118
- automationId: `navigation-item-${e.id}`
119
- });
120
- }), l && /* @__PURE__ */ o.createElement($, {
121
- className: "navigation-bar-popover",
122
- position: "bottom-left",
123
- noBorder: !0,
124
- renderPopoverSrcElement: ({
125
- displayPopover: e
126
- }) => /* @__PURE__ */ o.createElement("div", {
127
- className: "navigation-bar-popover-src-element flex items-center gap-1 cursor-pointer"
128
- }, /* @__PURE__ */ o.createElement("label", {
129
- className: "font-semibold cursor-pointer"
130
- }, D?.label), /* @__PURE__ */ o.createElement(w, {
131
- name: "chevron",
132
- rotation: e ? "180" : "0"
133
- })),
134
- renderPopoverContents: ({
135
- closePopoverCb: e
136
- }) => /* @__PURE__ */ o.createElement(O, {
137
- items: t.map((r) => ({
138
- id: r.id,
139
- label: r.label,
140
- onClick: () => {
141
- x(r), e();
142
- }
143
- }))
144
- })
145
- })), /* @__PURE__ */ o.createElement("div", {
146
- className: "se-design-navigation-bar-content"
147
- }, C));
11
+ const c = a?.split(" ")?.map((u) => u[0])?.join("")?.toUpperCase()?.slice(0, 2), s = () => t || o[Math.floor(Math.random() * o.length)];
12
+ return /* @__PURE__ */ d.createElement("div", {
13
+ className: `
14
+ se-design-avatar
15
+ flex items-center justify-center
16
+ rounded-full font-medium
17
+ ${e ? "cursor-pointer" : "cursor-default"}
18
+ ${n}
19
+ `,
20
+ onClick: e,
21
+ "data-automation-id": i,
22
+ style: {
23
+ width: r,
24
+ height: r,
25
+ minWidth: 20,
26
+ minHeight: 20,
27
+ backgroundColor: s(),
28
+ color: l,
29
+ fontSize: `${r * 0.4}px`
30
+ }
31
+ }, c);
148
32
  };
149
33
  export {
150
- ke as NavigationBar
34
+ f as Avatar
151
35
  };
152
36
  //# sourceMappingURL=index47.js.map