se-design 1.0.82 → 1.0.83-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/dist/assets/style.css +1 -1
  2. package/dist/components/NLSearch/ClearAiFiltersBar.d.ts +21 -0
  3. package/dist/components/NLSearch/NLDynamicChip.d.ts +18 -0
  4. package/dist/components/NLSearch/NLSearchInput.d.ts +21 -0
  5. package/dist/components/NLSearch/index.d.ts +6 -0
  6. package/dist/components/index.d.ts +2 -0
  7. package/dist/index.js +131 -124
  8. package/dist/index.js.map +1 -1
  9. package/dist/index100.js +1 -1
  10. package/dist/index100.js.map +1 -1
  11. package/dist/index101.js +1 -1
  12. package/dist/index101.js.map +1 -1
  13. package/dist/index102.js +1 -1
  14. package/dist/index102.js.map +1 -1
  15. package/dist/index103.js +1 -1
  16. package/dist/index103.js.map +1 -1
  17. package/dist/index104.js +1 -1
  18. package/dist/index104.js.map +1 -1
  19. package/dist/index105.js +1 -1
  20. package/dist/index105.js.map +1 -1
  21. package/dist/index106.js +1 -1
  22. package/dist/index106.js.map +1 -1
  23. package/dist/index107.js +1 -1
  24. package/dist/index107.js.map +1 -1
  25. package/dist/index108.js +1 -1
  26. package/dist/index108.js.map +1 -1
  27. package/dist/index109.js +2 -2
  28. package/dist/index109.js.map +1 -1
  29. package/dist/index11.js +1 -1
  30. package/dist/index110.js +2 -2
  31. package/dist/index110.js.map +1 -1
  32. package/dist/index111.js +1 -1
  33. package/dist/index111.js.map +1 -1
  34. package/dist/index112.js +1 -1
  35. package/dist/index112.js.map +1 -1
  36. package/dist/index113.js +2 -2
  37. package/dist/index113.js.map +1 -1
  38. package/dist/index114.js +1 -1
  39. package/dist/index114.js.map +1 -1
  40. package/dist/index115.js +2 -2
  41. package/dist/index115.js.map +1 -1
  42. package/dist/index116.js +1 -1
  43. package/dist/index116.js.map +1 -1
  44. package/dist/index117.js +1 -1
  45. package/dist/index117.js.map +1 -1
  46. package/dist/index118.js +2 -2
  47. package/dist/index118.js.map +1 -1
  48. package/dist/index119.js +2 -2
  49. package/dist/index119.js.map +1 -1
  50. package/dist/index12.js +3 -3
  51. package/dist/index120.js +1 -1
  52. package/dist/index120.js.map +1 -1
  53. package/dist/index121.js +2 -2
  54. package/dist/index121.js.map +1 -1
  55. package/dist/index122.js +2 -2
  56. package/dist/index122.js.map +1 -1
  57. package/dist/index123.js +2 -2
  58. package/dist/index123.js.map +1 -1
  59. package/dist/index124.js +1 -1
  60. package/dist/index124.js.map +1 -1
  61. package/dist/index125.js +2 -2
  62. package/dist/index125.js.map +1 -1
  63. package/dist/index126.js +2 -2
  64. package/dist/index126.js.map +1 -1
  65. package/dist/index127.js +2 -2
  66. package/dist/index127.js.map +1 -1
  67. package/dist/index128.js +1 -1
  68. package/dist/index128.js.map +1 -1
  69. package/dist/index129.js +1 -1
  70. package/dist/index129.js.map +1 -1
  71. package/dist/index13.js +2 -2
  72. package/dist/index130.js +2 -2
  73. package/dist/index130.js.map +1 -1
  74. package/dist/index131.js +2 -2
  75. package/dist/index131.js.map +1 -1
  76. package/dist/index132.js +2 -2
  77. package/dist/index132.js.map +1 -1
  78. package/dist/index133.js +1 -1
  79. package/dist/index133.js.map +1 -1
  80. package/dist/index134.js +1 -1
  81. package/dist/index134.js.map +1 -1
  82. package/dist/index135.js +2 -2
  83. package/dist/index135.js.map +1 -1
  84. package/dist/index136.js +2 -2
  85. package/dist/index136.js.map +1 -1
  86. package/dist/index137.js +1 -1
  87. package/dist/index137.js.map +1 -1
  88. package/dist/index138.js +1 -1
  89. package/dist/index138.js.map +1 -1
  90. package/dist/index139.js +1 -1
  91. package/dist/index139.js.map +1 -1
  92. package/dist/index140.js +1 -1
  93. package/dist/index140.js.map +1 -1
  94. package/dist/index141.js +1 -1
  95. package/dist/index141.js.map +1 -1
  96. package/dist/index142.js +2 -2
  97. package/dist/index142.js.map +1 -1
  98. package/dist/index143.js +1 -1
  99. package/dist/index143.js.map +1 -1
  100. package/dist/index144.js +1 -1
  101. package/dist/index144.js.map +1 -1
  102. package/dist/index145.js +1 -1
  103. package/dist/index145.js.map +1 -1
  104. package/dist/index146.js +2 -2
  105. package/dist/index146.js.map +1 -1
  106. package/dist/index147.js +1 -1
  107. package/dist/index147.js.map +1 -1
  108. package/dist/index148.js +1 -1
  109. package/dist/index148.js.map +1 -1
  110. package/dist/index149.js +1 -1
  111. package/dist/index149.js.map +1 -1
  112. package/dist/index150.js +1 -1
  113. package/dist/index150.js.map +1 -1
  114. package/dist/index151.js +2 -2
  115. package/dist/index151.js.map +1 -1
  116. package/dist/index152.js +2 -2
  117. package/dist/index152.js.map +1 -1
  118. package/dist/index153.js +1 -1
  119. package/dist/index153.js.map +1 -1
  120. package/dist/index154.js +2 -2
  121. package/dist/index154.js.map +1 -1
  122. package/dist/index155.js +1 -1
  123. package/dist/index155.js.map +1 -1
  124. package/dist/index156.js +2 -2
  125. package/dist/index156.js.map +1 -1
  126. package/dist/index157.js +1 -1
  127. package/dist/index157.js.map +1 -1
  128. package/dist/index158.js +2 -2
  129. package/dist/index158.js.map +1 -1
  130. package/dist/index159.js +2 -2
  131. package/dist/index159.js.map +1 -1
  132. package/dist/index16.js +3 -3
  133. package/dist/index160.js +1 -1
  134. package/dist/index160.js.map +1 -1
  135. package/dist/index161.js +1 -1
  136. package/dist/index161.js.map +1 -1
  137. package/dist/index162.js +1 -1
  138. package/dist/index162.js.map +1 -1
  139. package/dist/index163.js +1 -1
  140. package/dist/index163.js.map +1 -1
  141. package/dist/index164.js +1 -1
  142. package/dist/index164.js.map +1 -1
  143. package/dist/index165.js +1 -1
  144. package/dist/index165.js.map +1 -1
  145. package/dist/index166.js +1 -1
  146. package/dist/index166.js.map +1 -1
  147. package/dist/index167.js +1 -1
  148. package/dist/index167.js.map +1 -1
  149. package/dist/index168.js +1 -1
  150. package/dist/index168.js.map +1 -1
  151. package/dist/index169.js +1 -1
  152. package/dist/index169.js.map +1 -1
  153. package/dist/index170.js +1 -1
  154. package/dist/index170.js.map +1 -1
  155. package/dist/index171.js +1 -1
  156. package/dist/index171.js.map +1 -1
  157. package/dist/index172.js +1 -1
  158. package/dist/index172.js.map +1 -1
  159. package/dist/index173.js +1 -1
  160. package/dist/index173.js.map +1 -1
  161. package/dist/index174.js +1 -1
  162. package/dist/index174.js.map +1 -1
  163. package/dist/index175.js +1 -1
  164. package/dist/index175.js.map +1 -1
  165. package/dist/index176.js +1 -1
  166. package/dist/index176.js.map +1 -1
  167. package/dist/index177.js +1 -1
  168. package/dist/index177.js.map +1 -1
  169. package/dist/index178.js +1 -1
  170. package/dist/index178.js.map +1 -1
  171. package/dist/index179.js +1 -1
  172. package/dist/index179.js.map +1 -1
  173. package/dist/index18.js +2 -2
  174. package/dist/index180.js +1 -1
  175. package/dist/index180.js.map +1 -1
  176. package/dist/index181.js +2 -2
  177. package/dist/index181.js.map +1 -1
  178. package/dist/index182.js +1 -1
  179. package/dist/index182.js.map +1 -1
  180. package/dist/index183.js +1 -1
  181. package/dist/index183.js.map +1 -1
  182. package/dist/index184.js +1 -1
  183. package/dist/index184.js.map +1 -1
  184. package/dist/index185.js +2 -2
  185. package/dist/index185.js.map +1 -1
  186. package/dist/index186.js +1 -1
  187. package/dist/index186.js.map +1 -1
  188. package/dist/index187.js +1 -1
  189. package/dist/index187.js.map +1 -1
  190. package/dist/index188.js +1 -1
  191. package/dist/index188.js.map +1 -1
  192. package/dist/index189.js +2 -2
  193. package/dist/index189.js.map +1 -1
  194. package/dist/index19.js +5 -5
  195. package/dist/index190.js +1 -1
  196. package/dist/index190.js.map +1 -1
  197. package/dist/index191.js +1 -1
  198. package/dist/index191.js.map +1 -1
  199. package/dist/index192.js +1 -1
  200. package/dist/index192.js.map +1 -1
  201. package/dist/index193.js +1 -1
  202. package/dist/index193.js.map +1 -1
  203. package/dist/index194.js +1 -1
  204. package/dist/index194.js.map +1 -1
  205. package/dist/index195.js +1 -1
  206. package/dist/index195.js.map +1 -1
  207. package/dist/index196.js +2 -2
  208. package/dist/index196.js.map +1 -1
  209. package/dist/index197.js +1 -1
  210. package/dist/index197.js.map +1 -1
  211. package/dist/index198.js +2 -2
  212. package/dist/index198.js.map +1 -1
  213. package/dist/index199.js +2 -149
  214. package/dist/index199.js.map +1 -1
  215. package/dist/index200.js +2 -9
  216. package/dist/index200.js.map +1 -1
  217. package/dist/index201.js +2 -6
  218. package/dist/index201.js.map +1 -1
  219. package/dist/index202.js +2 -5
  220. package/dist/index202.js.map +1 -1
  221. package/dist/index203.js +149 -42
  222. package/dist/index203.js.map +1 -1
  223. package/dist/index204.js +8 -20
  224. package/dist/index204.js.map +1 -1
  225. package/dist/index205.js +9 -0
  226. package/dist/index205.js.map +1 -0
  227. package/dist/index206.js +8 -0
  228. package/dist/index206.js.map +1 -0
  229. package/dist/index207.js +45 -0
  230. package/dist/index207.js.map +1 -0
  231. package/dist/index208.js +24 -0
  232. package/dist/index208.js.map +1 -0
  233. package/dist/{index211.js → index215.js} +1 -1
  234. package/dist/{index211.js.map → index215.js.map} +1 -1
  235. package/dist/{index212.js → index216.js} +3 -3
  236. package/dist/{index212.js.map → index216.js.map} +1 -1
  237. package/dist/{index220.js → index224.js} +1 -1
  238. package/dist/{index220.js.map → index224.js.map} +1 -1
  239. package/dist/index23.js +4 -4
  240. package/dist/{index228.js → index232.js} +1 -1
  241. package/dist/{index228.js.map → index232.js.map} +1 -1
  242. package/dist/{index231.js → index235.js} +1 -1
  243. package/dist/{index231.js.map → index235.js.map} +1 -1
  244. package/dist/index244.js +168 -8
  245. package/dist/index244.js.map +1 -1
  246. package/dist/index245.js +3 -9
  247. package/dist/index245.js.map +1 -1
  248. package/dist/index247.js +18 -169
  249. package/dist/index247.js.map +1 -1
  250. package/dist/index248.js +10 -11
  251. package/dist/index248.js.map +1 -1
  252. package/dist/index249.js +8 -4
  253. package/dist/index249.js.map +1 -1
  254. package/dist/index25.js +3 -3
  255. package/dist/index250.js +4 -5
  256. package/dist/index250.js.map +1 -1
  257. package/dist/index251.js +168 -36
  258. package/dist/index251.js.map +1 -1
  259. package/dist/index252.js +11 -2
  260. package/dist/index252.js.map +1 -1
  261. package/dist/index253.js +5 -7
  262. package/dist/index253.js.map +1 -1
  263. package/dist/index254.js +5 -326
  264. package/dist/index254.js.map +1 -1
  265. package/dist/index255.js +36 -48
  266. package/dist/index255.js.map +1 -1
  267. package/dist/index256.js +2 -2
  268. package/dist/index257.js +7 -75
  269. package/dist/index257.js.map +1 -1
  270. package/dist/index258.js +308 -74
  271. package/dist/index258.js.map +1 -1
  272. package/dist/index259.js +45 -47
  273. package/dist/index259.js.map +1 -1
  274. package/dist/index260.js +2 -8
  275. package/dist/index260.js.map +1 -1
  276. package/dist/index261.js +75 -4
  277. package/dist/index261.js.map +1 -1
  278. package/dist/index262.js +89 -48
  279. package/dist/index262.js.map +1 -1
  280. package/dist/index263.js +52 -2
  281. package/dist/index263.js.map +1 -1
  282. package/dist/index264.js +8 -2
  283. package/dist/index264.js.map +1 -1
  284. package/dist/index265.js +8 -0
  285. package/dist/index265.js.map +1 -0
  286. package/dist/index266.js +55 -0
  287. package/dist/index266.js.map +1 -0
  288. package/dist/index267.js +5 -0
  289. package/dist/index267.js.map +1 -0
  290. package/dist/index268.js +5 -0
  291. package/dist/index268.js.map +1 -0
  292. package/dist/index27.js +1 -1
  293. package/dist/index28.js +4 -4
  294. package/dist/index29.js +3 -3
  295. package/dist/index3.js +3 -3
  296. package/dist/index30.js +4 -4
  297. package/dist/index32.js +10 -11
  298. package/dist/index33.js +1 -1
  299. package/dist/index35.js +4 -4
  300. package/dist/index36.js +5 -5
  301. package/dist/index38.js +3 -3
  302. package/dist/index39.js +4 -4
  303. package/dist/index4.js +3 -3
  304. package/dist/index40.js +1 -1
  305. package/dist/index42.js +7 -8
  306. package/dist/index43.js +9 -10
  307. package/dist/index45.js +4 -4
  308. package/dist/index46.js +142 -193
  309. package/dist/index46.js.map +1 -1
  310. package/dist/index47.js +21 -38
  311. package/dist/index47.js.map +1 -1
  312. package/dist/index48.js +36 -33
  313. package/dist/index48.js.map +1 -1
  314. package/dist/index50.js +189 -78
  315. package/dist/index50.js.map +1 -1
  316. package/dist/index51.js +36 -459
  317. package/dist/index51.js.map +1 -1
  318. package/dist/index52.js +33 -98
  319. package/dist/index52.js.map +1 -1
  320. package/dist/index53.js +151 -36
  321. package/dist/index53.js.map +1 -1
  322. package/dist/index54.js +84 -36
  323. package/dist/index54.js.map +1 -1
  324. package/dist/index55.js +456 -88
  325. package/dist/index55.js.map +1 -1
  326. package/dist/index56.js +96 -161
  327. package/dist/index56.js.map +1 -1
  328. package/dist/index57.js +35 -146
  329. package/dist/index57.js.map +1 -1
  330. package/dist/index58.js +38 -33
  331. package/dist/index58.js.map +1 -1
  332. package/dist/index59.js +89 -83
  333. package/dist/index59.js.map +1 -1
  334. package/dist/index6.js +123 -123
  335. package/dist/index60.js +157 -113
  336. package/dist/index60.js.map +1 -1
  337. package/dist/index61.js +143 -61
  338. package/dist/index61.js.map +1 -1
  339. package/dist/index62.js +33 -152
  340. package/dist/index62.js.map +1 -1
  341. package/dist/index63.js +80 -312
  342. package/dist/index63.js.map +1 -1
  343. package/dist/index64.js +118 -45
  344. package/dist/index64.js.map +1 -1
  345. package/dist/index65.js +62 -140
  346. package/dist/index65.js.map +1 -1
  347. package/dist/index66.js +152 -12
  348. package/dist/index66.js.map +1 -1
  349. package/dist/index67.js +316 -44
  350. package/dist/index67.js.map +1 -1
  351. package/dist/index68.js +44 -82
  352. package/dist/index68.js.map +1 -1
  353. package/dist/index69.js +143 -18
  354. package/dist/index69.js.map +1 -1
  355. package/dist/index7.js +9 -10
  356. package/dist/index70.js +9 -63
  357. package/dist/index70.js.map +1 -1
  358. package/dist/index71.js +45 -26
  359. package/dist/index71.js.map +1 -1
  360. package/dist/index72.js +78 -102
  361. package/dist/index72.js.map +1 -1
  362. package/dist/index73.js +18 -61
  363. package/dist/index73.js.map +1 -1
  364. package/dist/index74.js +63 -18
  365. package/dist/index74.js.map +1 -1
  366. package/dist/index75.js +27 -5
  367. package/dist/index75.js.map +1 -1
  368. package/dist/index76.js +102 -48
  369. package/dist/index76.js.map +1 -1
  370. package/dist/index77.js +58 -20
  371. package/dist/index77.js.map +1 -1
  372. package/dist/index78.js +19 -7
  373. package/dist/index78.js.map +1 -1
  374. package/dist/index79.js +8 -0
  375. package/dist/index79.js.map +1 -0
  376. package/dist/index80.js +54 -2
  377. package/dist/index80.js.map +1 -1
  378. package/dist/index81.js +24 -2
  379. package/dist/index81.js.map +1 -1
  380. package/dist/index82.js +9 -2
  381. package/dist/index82.js.map +1 -1
  382. package/dist/index84.js +2 -2
  383. package/dist/index84.js.map +1 -1
  384. package/dist/index85.js +2 -2
  385. package/dist/index85.js.map +1 -1
  386. package/dist/index86.js +1 -1
  387. package/dist/index86.js.map +1 -1
  388. package/dist/index87.js +2 -2
  389. package/dist/index87.js.map +1 -1
  390. package/dist/index88.js +1 -1
  391. package/dist/index88.js.map +1 -1
  392. package/dist/index89.js +1 -1
  393. package/dist/index89.js.map +1 -1
  394. package/dist/index9.js +5 -5
  395. package/dist/index90.js +1 -1
  396. package/dist/index90.js.map +1 -1
  397. package/dist/index91.js +1 -1
  398. package/dist/index91.js.map +1 -1
  399. package/dist/index92.js +1 -1
  400. package/dist/index92.js.map +1 -1
  401. package/dist/index93.js +1 -1
  402. package/dist/index93.js.map +1 -1
  403. package/dist/index94.js +1 -1
  404. package/dist/index94.js.map +1 -1
  405. package/dist/index95.js +1 -1
  406. package/dist/index95.js.map +1 -1
  407. package/dist/index96.js +1 -1
  408. package/dist/index96.js.map +1 -1
  409. package/dist/index97.js +1 -1
  410. package/dist/index97.js.map +1 -1
  411. package/dist/index98.js +1 -1
  412. package/dist/index98.js.map +1 -1
  413. package/dist/index99.js +1 -1
  414. package/dist/index99.js.map +1 -1
  415. package/package.json +1 -1
  416. package/dist/index240.js +0 -173
  417. package/dist/index240.js.map +0 -1
  418. package/dist/index241.js +0 -7
  419. package/dist/index241.js.map +0 -1
  420. package/dist/index243.js +0 -22
  421. package/dist/index243.js.map +0 -1
  422. package/dist/index246.js +0 -8
  423. package/dist/index246.js.map +0 -1
  424. package/dist/index49.js +0 -152
  425. package/dist/index49.js.map +0 -1
  426. package/dist/index83.js +0 -5
  427. package/dist/index83.js.map +0 -1
package/dist/index61.js CHANGED
@@ -1,70 +1,152 @@
1
- import l, { useState as p, useCallback as E, useEffect as y } from "react";
2
- import { Popover as P } from "./index19.js";
1
+ import p, { useState as A, useRef as O, useEffect as j } from "react";
2
+ import { useStableId as W } from "./index205.js";
3
3
  /* empty css */
4
- function f() {
5
- return f = Object.assign ? Object.assign.bind() : function(s) {
6
- for (var t = 1; t < arguments.length; t++) {
7
- var n = arguments[t];
8
- for (var e in n) ({}).hasOwnProperty.call(n, e) && (s[e] = n[e]);
9
- }
10
- return s;
11
- }, f.apply(null, arguments);
12
- }
13
- const I = ({
14
- label: s,
15
- children: t,
16
- iconColor: n = "",
17
- hoverBackgroundColor: e,
18
- isDisabled: r = !1,
19
- noPadding: u = !1
4
+ const M = ({
5
+ length: n = 6,
6
+ onChange: h,
7
+ onComplete: k,
8
+ label: y,
9
+ disabled: i = !1,
10
+ className: H = "",
11
+ autoFocus: w = !0,
12
+ error: K = !1,
13
+ errorMessage: l,
14
+ validateOnBlur: L = !1,
15
+ onValidate: u,
16
+ id: _
20
17
  }) => {
21
- const [m, a] = p(!1), [g, i] = p(!1), c = m || g, d = E((o) => {
22
- o.key === "Escape" && (a(!1), i(!1), o.stopImmediatePropagation());
23
- }, []);
24
- y(() => {
25
- if (c)
26
- return document.addEventListener("keydown", d), () => document.removeEventListener("keydown", d);
27
- }, [c, d]);
28
- const v = {
29
- onMouseEnter: () => a(!0),
30
- onMouseLeave: () => a(!1),
31
- onFocus: (o) => {
32
- o.target.matches(":focus-visible") && i(!0);
33
- },
34
- onBlur: () => i(!1)
18
+ const [s, P] = A(Array(n).fill("")), [g, m] = A(null), f = O([]), d = O(!1), $ = W(_, "se-otp-input"), R = `${$}-label`, B = `${$}-error`, N = (t) => /^\d$/.test(t), T = (t) => t.length === n && s.every((e) => e !== ""), b = (t, e, r = !1) => {
19
+ const o = [...s];
20
+ o[t] = e, P(o), r && e && t < n - 1 && c(t + 1);
21
+ }, E = (t) => {
22
+ b(t, "");
23
+ }, c = (t) => {
24
+ f.current[t]?.focus();
35
25
  };
36
- return /* @__PURE__ */ l.createElement("div", f({
37
- className: r ? "se-design-info-tooltip-wrapper-disabled" : ""
38
- }, r ? {} : v), /* @__PURE__ */ l.createElement(P, {
39
- position: "bottom-center",
40
- isPopoverOpen: c,
41
- onPopoverToggle: (o) => {
42
- o || (a(!1), i(!1));
43
- },
44
- renderPopoverSrcElement: () => /* @__PURE__ */ l.createElement("div", {
45
- className: `se-design-info-tooltip-src ${u ? "no-padding" : ""} ${r ? "se-design-info-tooltip-disabled" : ""}`,
46
- style: {
47
- "--info-tooltip-icon-color": n,
48
- ...e ? {
49
- "--info-tooltip-hover-bg": e
50
- } : {},
51
- cursor: r ? "not-allowed" : "pointer"
26
+ j(() => {
27
+ w && f.current[0] && !i && c(0);
28
+ }, [w, i]);
29
+ const C = (t) => {
30
+ if (t.length === 0)
31
+ return l || "Please enter the verification code";
32
+ if (t.length < n || !T(t))
33
+ return l || "Please enter all digits";
34
+ if (u) {
35
+ const e = u(t);
36
+ if (e === !1)
37
+ return l || "Invalid verification code";
38
+ if (typeof e == "string")
39
+ return e;
40
+ }
41
+ return null;
42
+ };
43
+ j(() => {
44
+ const t = s.join("");
45
+ if (h?.(t), g && t.length > 0 && m(null), T(t)) {
46
+ if (u) {
47
+ const e = u(t);
48
+ m(e === !1 || typeof e == "string" ? typeof e == "string" ? e : l || "Invalid verification code" : null);
52
49
  }
53
- }, t),
54
- renderPopoverContents: () => /* @__PURE__ */ l.createElement("div", {
55
- className: "se-design-info-tooltip-content",
56
- "data-automation-id": "se-design-info-tooltip-content"
57
- }, s),
58
- isWithPortal: !0,
59
- noBorder: !0,
60
- disableClickToggle: !0,
61
- popoverContentStyleProperty: {
62
- zIndex: 2e3,
63
- backgroundColor: ""
50
+ k?.(t);
51
+ }
52
+ }, [s, n, h, k, u, l]);
53
+ const F = (t, e) => {
54
+ e && !N(e) || b(t, e, !0);
55
+ }, V = (t, e) => {
56
+ if (i) return;
57
+ const r = s[t];
58
+ if (e.key === "Backspace") {
59
+ d.current = !0, r ? E(t) : t > 0 && (E(t - 1), c(t - 1)), setTimeout(() => {
60
+ d.current = !1;
61
+ }, 100), e.preventDefault();
62
+ return;
64
63
  }
65
- }));
64
+ if (e.key === "Delete") {
65
+ d.current = !0, E(t), setTimeout(() => {
66
+ d.current = !1;
67
+ }, 100), e.preventDefault();
68
+ return;
69
+ }
70
+ const o = {
71
+ ArrowLeft: () => t > 0 && c(t - 1),
72
+ ArrowRight: () => t < n - 1 && c(t + 1),
73
+ Home: () => c(0),
74
+ End: () => c(n - 1)
75
+ };
76
+ if (o[e.key]) {
77
+ o[e.key](), e.preventDefault();
78
+ return;
79
+ }
80
+ N(e.key) && r && b(t, e.key, !0);
81
+ }, q = (t) => {
82
+ if (i) return;
83
+ t.preventDefault();
84
+ const r = t.clipboardData.getData("text/plain").trim().replace(/\D/g, "").slice(0, n);
85
+ if (r.length > 0) {
86
+ const o = [...s], x = f.current.findIndex((a) => a === document.activeElement), v = x >= 0 ? x : 0;
87
+ for (let a = 0; a < r.length && v + a < n; a++)
88
+ o[v + a] = r[a];
89
+ P(o);
90
+ const S = o.findIndex((a, U) => U >= v && a === ""), Q = S >= 0 ? S : Math.min(v + r.length, n - 1);
91
+ c(Q);
92
+ }
93
+ }, z = (t) => {
94
+ f.current[t]?.select();
95
+ }, G = () => {
96
+ if (L && !d.current) {
97
+ const t = s.join(""), e = C(t);
98
+ m(e);
99
+ }
100
+ }, I = K || !!g, D = I && (l || g), J = D ? B : void 0;
101
+ return /* @__PURE__ */ p.createElement("div", {
102
+ className: `se-design-otp-input ${H || ""}`,
103
+ "data-automation-id": "otp-input-container"
104
+ }, y && /* @__PURE__ */ p.createElement("div", {
105
+ id: R,
106
+ className: "se-design-otp-input-label"
107
+ }, y), /* @__PURE__ */ p.createElement("div", {
108
+ className: "flex items-center gap-[12px]",
109
+ role: "group",
110
+ "aria-labelledby": y ? R : void 0
111
+ }, s.map((t, e) => /* @__PURE__ */ p.createElement("input", {
112
+ key: e,
113
+ ref: (r) => {
114
+ f.current[e] = r;
115
+ },
116
+ type: "text",
117
+ inputMode: "numeric",
118
+ maxLength: 1,
119
+ value: t,
120
+ onChange: (r) => F(e, r.target.value),
121
+ onKeyDown: (r) => V(e, r),
122
+ onPaste: q,
123
+ onFocus: () => z(e),
124
+ onBlur: G,
125
+ disabled: i,
126
+ className: `
127
+ w-12 h-12
128
+ flex flex-col items-start
129
+ text-center text-lg font-medium
130
+ border rounded-md
131
+ outline-none
132
+ transition-colors
133
+ disabled:bg-gray-50 disabled:cursor-not-allowed
134
+ ${i ? "border-[var(--color-gray-300)] text-gray-400" : I ? "border-[var(--color-red-500)] text-gray-900 focus:border-[var(--color-red-500)] focus:ring-1 focus:ring-[var(--color-red-500)]" : "border-[var(--color-gray-600)] text-gray-900 focus:border-[var(--color-blue-500)] focus:ring-1 focus:ring-[var(--color-blue-500)]"}
135
+ `,
136
+ style: {
137
+ gap: "var(--Spacer-6px, 6px)"
138
+ },
139
+ "aria-label": `OTP digit ${e + 1} of ${n}`,
140
+ "aria-invalid": I,
141
+ "aria-describedby": J,
142
+ "data-automation-id": `otp-input-${e}`
143
+ }))), D && /* @__PURE__ */ p.createElement("div", {
144
+ id: B,
145
+ className: "se-design-otp-input-error",
146
+ role: "alert"
147
+ }, D));
66
148
  };
67
149
  export {
68
- I as InfoTooltip
150
+ M as OTPInput
69
151
  };
70
152
  //# sourceMappingURL=index61.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index61.js","sources":["../src/components/InfoTooltip/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { Popover } from '../Popover';\nimport './styles.scss';\n\nexport interface InfoTooltipProps {\n label: string;\n children: React.ReactNode;\n iconColor?: string;\n /**\n * Background color shown on hover. Defaults to var(--color-blue-200).\n */\n hoverBackgroundColor?: string;\n isDisabled?: boolean;\n /**\n * Remove padding from tooltip wrapper (useful for precise alignment)\n */\n noPadding?: boolean;\n}\n\nexport const InfoTooltip = ({\n label,\n children,\n iconColor = '',\n hoverBackgroundColor,\n isDisabled = false,\n noPadding = false\n}: InfoTooltipProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n // Show tooltip on hover OR focus (for keyboard accessibility)\n const isOpen = isHovered || isFocused;\n\n // Global Escape key handler (W3C WAI-ARIA tooltip pattern requirement)\n const handleEscapeKey = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsHovered(false);\n setIsFocused(false);\n // Prevent other handlers (e.g., modal) from also closing - \"innermost first\" pattern\n event.stopImmediatePropagation();\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n return () => document.removeEventListener('keydown', handleEscapeKey);\n }\n }, [isOpen, handleEscapeKey]);\n\n const interactionHandlers = {\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n onFocus: (event: React.FocusEvent<HTMLDivElement>) => {\n const focusTarget = event.target as HTMLElement;\n if (focusTarget.matches(':focus-visible')) {\n setIsFocused(true);\n }\n },\n onBlur: () => setIsFocused(false)\n };\n\n return (\n <div\n className={isDisabled ? 'se-design-info-tooltip-wrapper-disabled' : ''}\n {...(isDisabled ? {} : interactionHandlers)}\n >\n <Popover\n position={'bottom-center'}\n isPopoverOpen={isOpen}\n onPopoverToggle={(open) => {\n // Sync popover state changes (e.g., Escape key) back to component state\n if (!open) {\n setIsHovered(false);\n setIsFocused(false);\n }\n }}\n renderPopoverSrcElement={() => (\n <div\n className={`se-design-info-tooltip-src ${noPadding ? 'no-padding' : ''} ${\n isDisabled ? 'se-design-info-tooltip-disabled' : ''\n }`}\n style={\n {\n '--info-tooltip-icon-color': iconColor,\n ...(hoverBackgroundColor ? { '--info-tooltip-hover-bg': hoverBackgroundColor } : {}),\n cursor: isDisabled ? 'not-allowed' : 'pointer'\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n )}\n renderPopoverContents={() => (\n <div className=\"se-design-info-tooltip-content\" data-automation-id=\"se-design-info-tooltip-content\">\n {label}\n </div>\n )}\n isWithPortal\n noBorder\n disableClickToggle\n popoverContentStyleProperty={{\n zIndex: 2000,\n backgroundColor: ''\n }}\n />\n </div>\n );\n};\n"],"names":["InfoTooltip","label","children","iconColor","hoverBackgroundColor","isDisabled","noPadding","isHovered","setIsHovered","useState","isFocused","setIsFocused","isOpen","handleEscapeKey","useCallback","event","key","stopImmediatePropagation","useEffect","document","addEventListener","removeEventListener","interactionHandlers","onMouseEnter","onMouseLeave","onFocus","target","matches","onBlur","React","createElement","_extends","className","Popover","position","isPopoverOpen","onPopoverToggle","open","renderPopoverSrcElement","style","cursor","renderPopoverContents","isWithPortal","noBorder","disableClickToggle","popoverContentStyleProperty","zIndex","backgroundColor"],"mappings":";;;;;;;;;;;;AAmBO,MAAMA,IAAcA,CAAC;AAAA,EAC1BC,OAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,sBAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,WAAAA,IAAY;AACI,MAAM;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAG1CG,IAASL,KAAaG,GAGtBG,IAAkBC,EAAY,CAACC,MAAyB;AAC5D,IAAIA,EAAMC,QAAQ,aAChBR,EAAa,EAAK,GAClBG,EAAa,EAAK,GAElBI,EAAME,yBAAAA;AAAAA,EAEV,GAAG,CAAA,CAAE;AAELC,EAAAA,EAAU,MAAM;AACd,QAAIN;AACFO,sBAASC,iBAAiB,WAAWP,CAAe,GAC7C,MAAMM,SAASE,oBAAoB,WAAWR,CAAe;AAAA,EAExE,GAAG,CAACD,GAAQC,CAAe,CAAC;AAE5B,QAAMS,IAAsB;AAAA,IAC1BC,cAAcA,MAAMf,EAAa,EAAI;AAAA,IACrCgB,cAAcA,MAAMhB,EAAa,EAAK;AAAA,IACtCiB,SAASA,CAACV,MAA4C;AAEpD,MADoBA,EAAMW,OACVC,QAAQ,gBAAgB,KACtChB,EAAa,EAAI;AAAA,IAErB;AAAA,IACAiB,QAAQA,MAAMjB,EAAa,EAAK;AAAA,EAAA;AAGlC,SACEkB,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IACEC,WAAW3B,IAAa,4CAA4C;AAAA,EAAA,GAC/DA,IAAa,CAAA,IAAKiB,CAAmB,GAE1CO,gBAAAA,EAAAC,cAACG,GAAO;AAAA,IACNC,UAAU;AAAA,IACVC,eAAevB;AAAAA,IACfwB,iBAAkBC,CAAAA,MAAS;AAEzB,MAAKA,MACH7B,EAAa,EAAK,GAClBG,EAAa,EAAK;AAAA,IAEtB;AAAA,IACA2B,yBAAyBA,MACvBT,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEE,WAAW,8BAA8B1B,IAAY,eAAe,EAAE,IACpED,IAAa,oCAAoC,EAAE;AAAA,MAErDkC,OACE;AAAA,QACE,6BAA6BpC;AAAAA,QAC7B,GAAIC,IAAuB;AAAA,UAAE,2BAA2BA;AAAAA,QAAAA,IAAyB,CAAA;AAAA,QACjFoC,QAAQnC,IAAa,gBAAgB;AAAA,MAAA;AAAA,IACvC,GAGDH,CACE;AAAA,IAEPuC,uBAAuBA,MACrBZ,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKE,WAAU;AAAA,MAAiC,sBAAmB;AAAA,IAAA,GAChE/B,CACE;AAAA,IAEPyC,cAAY;AAAA,IACZC,UAAQ;AAAA,IACRC,oBAAkB;AAAA,IAClBC,6BAA6B;AAAA,MAC3BC,QAAQ;AAAA,MACRC,iBAAiB;AAAA,IAAA;AAAA,EACnB,CACD,CACE;AAET;"}
1
+ {"version":3,"file":"index61.js","sources":["../src/components/OTPInput/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, KeyboardEvent, ChangeEvent, ClipboardEvent, FC } from 'react';\nimport { useStableId } from '../../utils/useStableId';\nimport './style.scss';\n\nexport interface OTPInputProps {\n length?: number;\n onChange?: (value: string) => void;\n onComplete?: (value: string) => void;\n label?: string;\n disabled?: boolean;\n className?: string;\n autoFocus?: boolean;\n error?: boolean;\n errorMessage?: string;\n validateOnBlur?: boolean;\n onValidate?: (value: string) => boolean | string;\n id?: string;\n}\n\nexport const OTPInput: FC<OTPInputProps> = ({\n length = 6,\n onChange,\n onComplete,\n label,\n disabled = false,\n className = '',\n autoFocus = true,\n error = false,\n errorMessage,\n validateOnBlur = false,\n onValidate,\n id\n}) => {\n const [values, setValues] = useState<string[]>(Array(length).fill(''));\n const [internalError, setInternalError] = useState<string | null>(null);\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n const isBackspacePressed = useRef<boolean>(false);\n \n // Generate stable IDs for ARIA attributes\n const baseId = useStableId(id, 'se-otp-input');\n const labelId = `${baseId}-label`;\n const errorId = `${baseId}-error`;\n\n // Helper: Check if a string is a single digit\n const isDigit = (char: string): boolean => /^\\d$/.test(char);\n\n // Helper: Check if OTP is complete\n const isComplete = (otpValue: string): boolean => {\n return otpValue.length === length && values.every((val) => val !== '');\n };\n\n // Helper: Update value at specific index\n const updateValue = (index: number, value: string, shouldFocusNext = false) => {\n const newValues = [...values];\n newValues[index] = value;\n setValues(newValues);\n\n if (shouldFocusNext && value && index < length - 1) {\n focusInput(index + 1);\n }\n };\n\n // Helper: Clear value at specific index\n const clearValue = (index: number) => {\n updateValue(index, '');\n };\n\n // Helper: Focus input at index\n const focusInput = (index: number) => {\n inputRefs.current[index]?.focus();\n };\n\n useEffect(() => {\n if (autoFocus && inputRefs.current[0] && !disabled) {\n focusInput(0);\n }\n }, [autoFocus, disabled]);\n\n // Internal validation\n const validateOTP = (otpValue: string): string | null => {\n // Empty validation\n if (otpValue.length === 0) {\n return errorMessage || 'Please enter the verification code';\n }\n\n // Incomplete validation\n if (otpValue.length < length || !isComplete(otpValue)) {\n return errorMessage || 'Please enter all digits';\n }\n\n // Custom validation\n if (onValidate) {\n const validationResult = onValidate(otpValue);\n if (validationResult === false) {\n return errorMessage || 'Invalid verification code';\n }\n if (typeof validationResult === 'string') {\n return validationResult;\n }\n }\n\n return null;\n };\n\n useEffect(() => {\n const otpValue = values.join('');\n onChange?.(otpValue);\n\n // Clear error when user starts typing\n if (internalError && otpValue.length > 0) {\n setInternalError(null);\n }\n\n if (isComplete(otpValue)) {\n // Validate on complete\n if (onValidate) {\n const validationResult = onValidate(otpValue);\n if (validationResult === false || typeof validationResult === 'string') {\n const errorMsg =\n typeof validationResult === 'string' ? validationResult : errorMessage || 'Invalid verification code';\n setInternalError(errorMsg);\n } else {\n setInternalError(null);\n }\n }\n onComplete?.(otpValue);\n }\n }, [values, length, onChange, onComplete, onValidate, errorMessage]);\n\n const handleChange = (index: number, value: string) => {\n // Only allow single digit or empty\n if (value && !isDigit(value)) {\n return;\n }\n\n updateValue(index, value, true);\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n const currentValue = values[index];\n\n // Handle backspace\n if (e.key === 'Backspace') {\n isBackspacePressed.current = true;\n if (currentValue) {\n clearValue(index);\n } else if (index > 0) {\n clearValue(index - 1);\n focusInput(index - 1);\n }\n // Reset backspace flag after a short delay\n setTimeout(() => {\n isBackspacePressed.current = false;\n }, 100);\n e.preventDefault();\n return;\n }\n\n // Handle delete\n if (e.key === 'Delete') {\n isBackspacePressed.current = true;\n clearValue(index);\n // Reset backspace flag after a short delay\n setTimeout(() => {\n isBackspacePressed.current = false;\n }, 100);\n e.preventDefault();\n return;\n }\n\n // Handle navigation keys\n const navigationHandlers: Record<string, () => void> = {\n ArrowLeft: () => index > 0 && focusInput(index - 1),\n ArrowRight: () => index < length - 1 && focusInput(index + 1),\n Home: () => focusInput(0),\n End: () => focusInput(length - 1)\n };\n\n if (navigationHandlers[e.key]) {\n navigationHandlers[e.key]();\n e.preventDefault();\n return;\n }\n\n // Allow digits, but prevent if already filled\n if (isDigit(e.key)) {\n if (currentValue) {\n updateValue(index, e.key, true);\n }\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text/plain').trim();\n\n // Extract only digits\n const digits = pastedData.replace(/\\D/g, '').slice(0, length);\n\n if (digits.length > 0) {\n const newValues = [...values];\n\n // Fill inputs starting from the current index\n const startIndex = inputRefs.current.findIndex((ref) => ref === document.activeElement);\n const actualStartIndex = startIndex >= 0 ? startIndex : 0;\n\n for (let i = 0; i < digits.length && actualStartIndex + i < length; i++) {\n newValues[actualStartIndex + i] = digits[i];\n }\n\n setValues(newValues);\n\n // Focus the next empty input or the last input\n const nextEmptyIndex = newValues.findIndex((val, idx) => idx >= actualStartIndex && val === '');\n const focusIndex = nextEmptyIndex >= 0 ? nextEmptyIndex : Math.min(actualStartIndex + digits.length, length - 1);\n focusInput(focusIndex);\n }\n };\n\n const handleFocus = (index: number) => {\n inputRefs.current[index]?.select();\n };\n\n const handleBlur = () => {\n // Don't validate on blur if backspace/delete was just pressed\n if (validateOnBlur && !isBackspacePressed.current) {\n const otpValue = values.join('');\n const validationError = validateOTP(otpValue);\n setInternalError(validationError);\n }\n };\n\n const hasError = error || !!internalError;\n // Priority: errorMessage prop > internalError\n const displayError = hasError && (errorMessage || internalError);\n \n const ariaDescribedByError = displayError ? errorId : undefined;\n\n return (\n <div className={`se-design-otp-input ${className || ''}`} data-automation-id=\"otp-input-container\">\n {label && <div id={labelId} className=\"se-design-otp-input-label\">{label}</div>}\n <div className=\"flex items-center gap-[12px]\" role=\"group\" aria-labelledby={label ? labelId : undefined}>\n {values.map((value, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={value}\n onChange={(e: ChangeEvent<HTMLInputElement>) => handleChange(index, e.target.value)}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={() => handleFocus(index)}\n onBlur={handleBlur}\n disabled={disabled}\n className={`\n w-12 h-12 \n flex flex-col items-start \n text-center text-lg font-medium\n border rounded-md\n outline-none\n transition-colors\n disabled:bg-gray-50 disabled:cursor-not-allowed\n ${\n disabled\n ? 'border-[var(--color-gray-300)] text-gray-400'\n : hasError\n ? 'border-[var(--color-red-500)] text-gray-900 focus:border-[var(--color-red-500)] focus:ring-1 focus:ring-[var(--color-red-500)]'\n : 'border-[var(--color-gray-600)] text-gray-900 focus:border-[var(--color-blue-500)] focus:ring-1 focus:ring-[var(--color-blue-500)]'\n }\n `}\n style={{\n gap: 'var(--Spacer-6px, 6px)'\n }}\n aria-label={`OTP digit ${index + 1} of ${length}`}\n aria-invalid={hasError}\n aria-describedby={ariaDescribedByError}\n data-automation-id={`otp-input-${index}`}\n />\n ))}\n </div>\n {displayError && <div id={errorId} className=\"se-design-otp-input-error\" role=\"alert\">{displayError}</div>}\n </div>\n );\n};\n"],"names":["OTPInput","length","onChange","onComplete","label","disabled","className","autoFocus","error","errorMessage","validateOnBlur","onValidate","id","values","setValues","useState","Array","fill","internalError","setInternalError","inputRefs","useRef","isBackspacePressed","baseId","useStableId","labelId","errorId","isDigit","char","test","isComplete","otpValue","every","val","updateValue","index","value","shouldFocusNext","newValues","focusInput","clearValue","current","focus","useEffect","validateOTP","validationResult","join","handleChange","handleKeyDown","e","currentValue","key","setTimeout","preventDefault","navigationHandlers","ArrowLeft","ArrowRight","Home","End","handlePaste","digits","clipboardData","getData","trim","replace","slice","startIndex","findIndex","ref","document","activeElement","actualStartIndex","i","nextEmptyIndex","idx","focusIndex","Math","min","handleFocus","select","handleBlur","validationError","hasError","displayError","ariaDescribedByError","undefined","React","createElement","role","map","el","type","inputMode","maxLength","target","onKeyDown","onPaste","onFocus","onBlur","style","gap"],"mappings":"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"}
package/dist/index62.js CHANGED
@@ -1,155 +1,36 @@
1
- import o, { useState as B, useRef as C, useCallback as m, useEffect as w } from "react";
2
- import { Button as L } from "./index4.js";
3
- import { Tooltip as D } from "./index16.js";
4
- /* empty css */
5
- const u = {
6
- gotIt: "got_it",
7
- finish: "finish",
8
- next: "next",
9
- back: "back"
10
- }, Q = ({
11
- steps: e = [],
12
- screenBaseElementSelector: T = "",
13
- handleCloseProductTour: d,
14
- tourType: g = "",
15
- automationId: f = "onboarding-tour",
16
- highlightBorderRadius: E = 6,
17
- labels: A
18
- }) => {
19
- const [t, k] = B(0), c = C(null), l = C(null), {
20
- next: H = "Next",
21
- gotIt: P = "Got It",
22
- finish: M = "Finish",
23
- skip: W = "Skip tour",
24
- stepInfo: O = "Step {step} of {total}"
25
- } = A || {}, s = document.querySelector(T), y = m(() => {
26
- let n;
27
- if (t >= e.length)
28
- return n;
29
- const i = document.querySelector(e[t]?.targetElementContainerSelector ? e[t].targetElementContainerSelector : e[t]?.targetElementSelector);
30
- if (!i)
31
- return n;
32
- const r = i.getBoundingClientRect();
33
- return r.top >= 0 && r.left >= 0 && r.bottom <= window.innerHeight && r.right <= window.innerWidth || (r.top < 0 ? i.scrollIntoView({
34
- behavior: "auto",
35
- block: "start"
36
- }) : r.bottom > window.innerHeight && i.scrollIntoView({
37
- behavior: "auto",
38
- block: "end"
39
- })), n = setTimeout(() => {
40
- const x = document.querySelector(e[t]?.targetElementSelector);
41
- if (!x || !c.current || !l.current)
42
- return;
43
- const a = x.getBoundingClientRect(), p = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
44
- c.current.style.height = `${p}px`;
45
- const h = e[t]?.targetElementGap || {
46
- horizontal: 0,
47
- vertical: 0
48
- }, S = E * 2, I = a.left - h.horizontal, N = a.top + window.scrollY - h.vertical, z = a.right + h.horizontal, F = a.bottom + window.scrollY + h.vertical, G = z - I, q = F - N, R = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth), _ = encodeURIComponent(`
49
- <svg width="${R}" height="${p}" xmlns="http://www.w3.org/2000/svg">
50
- <defs>
51
- <mask id="highlight-mask-${t}">
52
- <rect x="0" y="0" width="${R}" height="${p}" fill="white"/>
53
- <rect x="${I}" y="${N}" width="${G}" height="${q}" rx="${S}" ry="${S}" fill="black"/>
54
- </mask>
55
- </defs>
56
- </svg>
57
- `);
58
- c.current.style.maskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, c.current.style.webkitMaskImage = `url("data:image/svg+xml,${_}#highlight-mask-${t}")`, l.current.style.top = `${a.top}px`, l.current.style.left = `${a.left}px`, l.current.style.width = `${a.width}px`, l.current.style.height = `${a.height}px`, l.current.style.borderRadius = `${E}px`;
59
- }, 50), n;
60
- }, [t, e]), V = m(() => {
61
- d(), s && s.scrollTo({
62
- top: 0,
63
- behavior: "smooth"
64
- });
65
- }, [d, s]), v = m((n) => {
66
- n?.preventDefault(), n?.stopPropagation(), t < e.length - 1 ? k((i) => i + 1) : (d(n), s && s.scrollTo({
67
- top: 0,
68
- behavior: "smooth"
69
- })), e[t]?.tourMixPanelHandler?.({
70
- user_path: g,
71
- action_type: `clicked_${t === e.length - 1 ? e.length === 1 ? u.gotIt : u.finish : u.next}`
72
- });
73
- }, [t, e, d, g, s]), $ = m(() => {
74
- t > 0 && k((n) => n - 1), e[t]?.tourMixPanelHandler?.({
75
- user_path: g,
76
- action_type: `clicked_${u.back}`
77
- });
78
- }, [t, e, g]), b = m((n) => {
79
- (n.keyCode === 37 || n.key === "ArrowLeft") && t > 0 && $(), (n.keyCode === 39 || n.key === "ArrowRight") && v();
80
- }, [t, v, $]);
81
- return w(() => (window.addEventListener("keydown", b), () => {
82
- window.removeEventListener("keydown", b);
83
- }), [b]), w(() => {
84
- let n;
85
- return t < e.length && (n = y()), () => {
86
- n && clearTimeout(n);
87
- };
88
- }, [t, e, y]), w(() => {
89
- if (t < e.length && c.current) {
90
- const n = c.current, i = (r) => {
91
- r.preventDefault(), r.stopPropagation();
92
- };
93
- return n.addEventListener("wheel", i, {
94
- passive: !1
95
- }), n.addEventListener("touchmove", i, {
96
- passive: !1
97
- }), n.addEventListener("scroll", i, {
98
- passive: !1
99
- }), () => {
100
- n.removeEventListener("wheel", i), n.removeEventListener("touchmove", i), n.removeEventListener("scroll", i);
101
- };
102
- }
103
- }, [t]), !e || e.length === 0 ? null : /* @__PURE__ */ o.createElement(o.Fragment, null, /* @__PURE__ */ o.createElement("div", {
104
- className: "se-design-onboarding-tour-overlay",
105
- ref: c,
106
- "data-automation-id": `${f}-overlay`
107
- }), /* @__PURE__ */ o.createElement(D, {
108
- content: /* @__PURE__ */ o.createElement("div", {
109
- className: "se-design-onboarding-tour-tooltip-content"
110
- }, e[t]?.content?.illustration && /* @__PURE__ */ o.createElement("img", {
111
- src: e[t].content.illustration,
112
- className: "se-design-onboarding-tour-illustration",
113
- alt: "illustration"
114
- }), /* @__PURE__ */ o.createElement("div", {
115
- className: "se-design-onboarding-tour-content"
116
- }, e[t]?.content?.title && /* @__PURE__ */ o.createElement("p", {
117
- className: "se-design-onboarding-tour-title"
118
- }, e[t].content.title), e[t]?.content?.description && /* @__PURE__ */ o.createElement("p", {
119
- className: "se-design-onboarding-tour-description"
120
- }, e[t].content.description)), /* @__PURE__ */ o.createElement("div", {
121
- className: "se-design-onboarding-tour-actions"
122
- }, e.length > 1 && /* @__PURE__ */ o.createElement("span", {
123
- className: "steps"
124
- }, O.replace("{step}", `${t + 1}`).replace("{total}", `${e.length}`)), /* @__PURE__ */ o.createElement("div", {
125
- className: "btns-container"
126
- }, t !== e.length - 1 && /* @__PURE__ */ o.createElement(L, {
127
- theme: "white",
128
- type: "link",
129
- label: W,
130
- automationId: `${f}-skip-button`,
131
- onClick: V
132
- }), /* @__PURE__ */ o.createElement(L, {
133
- theme: "white",
134
- type: "primary",
135
- size: "sm",
136
- label: t === e.length - 1 ? e.length === 1 ? P : M : H,
137
- automationId: `${f}-next-button`,
138
- onClick: v
139
- })))),
140
- tooltipSrc: /* @__PURE__ */ o.createElement("div", {
141
- className: "blocker",
142
- ref: l
143
- }),
144
- tooltipSrcRef: l,
145
- position: e[t]?.tooltipPosition || "bottom-center",
146
- tooltipOffset: 16,
147
- displayOn: "always-on",
148
- isWithPortal: !0,
149
- maxWidth: 384
150
- }));
151
- };
1
+ import e from "react";
2
+ import { Icon as c } from "./index6.js";
3
+ const i = ({
4
+ className: a = "",
5
+ message: t = "",
6
+ backgroundColor: l = "var(--color-yellow-50)",
7
+ textColor: r = "var(--color-yellow-800)",
8
+ borderColor: o = "var(--color-yellow-200)",
9
+ actionJSX: n = () => /* @__PURE__ */ e.createElement(e.Fragment, null)
10
+ }) => /* @__PURE__ */ e.createElement("div", {
11
+ className: `se-design-info-bar ${a} px-3 py-2 border rounded-[6px]`,
12
+ style: {
13
+ backgroundColor: l,
14
+ borderColor: o,
15
+ color: r
16
+ }
17
+ }, /* @__PURE__ */ e.createElement("div", {
18
+ className: "info-bar-message flex items-center gap-2"
19
+ }, /* @__PURE__ */ e.createElement("div", {
20
+ style: {
21
+ transform: "rotate(180deg)"
22
+ }
23
+ }, /* @__PURE__ */ e.createElement(c, {
24
+ name: "info",
25
+ stroke: r
26
+ })), /* @__PURE__ */ e.createElement("span", {
27
+ style: {
28
+ color: r
29
+ }
30
+ }, t)), /* @__PURE__ */ e.createElement("div", {
31
+ className: "info-bar-action ml-[22px]"
32
+ }, n()));
152
33
  export {
153
- Q as OnboardingTour
34
+ i as InfoBar
154
35
  };
155
36
  //# sourceMappingURL=index62.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index62.js","sources":["../src/components/OnboardingTour/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useState, useCallback } from 'react';\n\nimport { Button } from 'components/Button';\nimport { Tooltip } from 'components/Tooltip';\n\nimport './style.scss';\n\nconst TOUR_NAVIGATION_STEPS = {\n gotIt: 'got_it',\n finish: 'finish',\n next: 'next',\n back: 'back'\n};\n\nexport interface TourStep {\n targetElementSelector: string;\n targetElementContainerSelector?: string;\n targetElementGap?: {\n horizontal: number;\n vertical: number;\n };\n tooltipPosition?:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n content: {\n title?: string;\n description?: string;\n illustration?: any;\n };\n tourMixPanelHandler?: (data: { user_path: string; action_type: string }) => void;\n}\n\nexport interface OnboardingTourProps {\n steps: TourStep[];\n screenBaseElementSelector: string;\n handleCloseProductTour: (e?: React.MouseEvent<HTMLButtonElement>) => void;\n tourType?: string;\n highlightBorderRadius?: number;\n automationId?: string;\n labels?: {\n next: string;\n gotIt: string;\n finish: string;\n skip: string;\n stepInfo: string;\n };\n}\n\nexport const OnboardingTour: FC<OnboardingTourProps> = ({\n steps = [],\n screenBaseElementSelector = '',\n handleCloseProductTour,\n tourType = '',\n automationId = 'onboarding-tour',\n highlightBorderRadius = 6,\n labels\n}) => {\n const [currentStep, setCurrentStep] = useState(0);\n const overlayRef = useRef<HTMLDivElement>(null);\n const blockerRef = useRef<HTMLDivElement>(null);\n\n const {\n next = 'Next',\n gotIt = 'Got It',\n finish = 'Finish',\n skip = 'Skip tour',\n stepInfo = 'Step {step} of {total}'\n } = labels || {};\n\n const parentScreenElement = document.querySelector(screenBaseElementSelector) as HTMLElement | null;\n\n const clipTargetElementAndPositionTooltip = useCallback(() => {\n let timerId: any;\n\n if (currentStep >= steps.length) {\n return timerId;\n }\n\n // get the target element\n const initialTargetElement = document.querySelector(\n steps[currentStep]?.targetElementContainerSelector\n ? steps[currentStep].targetElementContainerSelector\n : steps[currentStep]?.targetElementSelector\n ) as HTMLElement | null;\n\n if (!initialTargetElement) {\n return timerId;\n }\n\n const initialTargetArea = initialTargetElement.getBoundingClientRect();\n\n // check whether target element is fully visible in viewport\n const isFullyVisible =\n initialTargetArea.top >= 0 &&\n initialTargetArea.left >= 0 &&\n initialTargetArea.bottom <= window.innerHeight &&\n initialTargetArea.right <= window.innerWidth;\n\n if (!isFullyVisible) {\n if (initialTargetArea.top < 0) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'start' });\n } else if (initialTargetArea.bottom > window.innerHeight) {\n initialTargetElement.scrollIntoView({ behavior: 'auto', block: 'end' });\n }\n }\n\n // if the target element is visible, then clip the target element and position the tooltip\n timerId = setTimeout(() => {\n const targetElement = document.querySelector(steps[currentStep]?.targetElementSelector) as HTMLElement | null;\n\n if (!targetElement || !overlayRef.current || !blockerRef.current) {\n return;\n }\n\n const targetArea = targetElement.getBoundingClientRect();\n\n const documentHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);\n\n // Update overlay dimensions and calculate target element area to focus\n overlayRef.current.style.height = `${documentHeight}px`;\n\n // Providing gap around target element\n const targetElementGap = steps[currentStep]?.targetElementGap || { horizontal: 0, vertical: 0 };\n\n // clip the target element with rounded corners\n const borderRadius = highlightBorderRadius * 2;\n const left = targetArea.left - targetElementGap.horizontal;\n const top = targetArea.top + window.scrollY - targetElementGap.vertical;\n const right = targetArea.right + targetElementGap.horizontal;\n const bottom = targetArea.bottom + window.scrollY + targetElementGap.vertical;\n const width = right - left;\n const height = bottom - top;\n const documentWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);\n\n // Create SVG mask with rounded rectangle hole\n const svgMask = encodeURIComponent(`\n <svg width=\"${documentWidth}\" height=\"${documentHeight}\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <mask id=\"highlight-mask-${currentStep}\">\n <rect x=\"0\" y=\"0\" width=\"${documentWidth}\" height=\"${documentHeight}\" fill=\"white\"/>\n <rect x=\"${left}\" y=\"${top}\" width=\"${width}\" height=\"${height}\" rx=\"${borderRadius}\" ry=\"${borderRadius}\" fill=\"black\"/>\n </mask>\n </defs>\n </svg>\n `);\n\n // Apply created mask to the overlay\n overlayRef.current.style.maskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n overlayRef.current.style.webkitMaskImage = `url(\"data:image/svg+xml,${svgMask}#highlight-mask-${currentStep}\")`;\n\n // Position blocker over clipped area to avoid clicks on the target element\n blockerRef.current.style.top = `${targetArea.top}px`;\n blockerRef.current.style.left = `${targetArea.left}px`;\n blockerRef.current.style.width = `${targetArea.width}px`;\n blockerRef.current.style.height = `${targetArea.height}px`;\n blockerRef.current.style.borderRadius = `${highlightBorderRadius}px`;\n }, 50);\n\n return timerId;\n }, [currentStep, steps]);\n\n const handleSkipTour = useCallback(() => {\n handleCloseProductTour();\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [handleCloseProductTour, parentScreenElement]);\n\n const handleNextClick = useCallback(\n (e?: React.MouseEvent<HTMLButtonElement>) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n if (currentStep < steps.length - 1) {\n setCurrentStep((prev) => prev + 1);\n } else {\n handleCloseProductTour(e);\n if (parentScreenElement) {\n parentScreenElement.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${\n currentStep === steps.length - 1\n ? steps.length === 1\n ? TOUR_NAVIGATION_STEPS.gotIt\n : TOUR_NAVIGATION_STEPS.finish\n : TOUR_NAVIGATION_STEPS.next\n }`\n });\n },\n [currentStep, steps, handleCloseProductTour, tourType, parentScreenElement]\n );\n\n const handlePrevClick = useCallback(() => {\n if (currentStep > 0) {\n setCurrentStep((prev) => prev - 1);\n }\n steps[currentStep]?.tourMixPanelHandler?.({\n user_path: tourType,\n action_type: `clicked_${TOUR_NAVIGATION_STEPS.back}`\n });\n }, [currentStep, steps, tourType]);\n\n const handleKeyPress = useCallback(\n (e: KeyboardEvent) => {\n if (e.keyCode === 37 || e.key === 'ArrowLeft') {\n // for previous navigation\n if (currentStep > 0) {\n handlePrevClick();\n }\n }\n if (e.keyCode === 39 || e.key === 'ArrowRight') {\n // for next navigation\n handleNextClick();\n }\n },\n [currentStep, handleNextClick, handlePrevClick]\n );\n\n useEffect(() => {\n // Adding event listener for keydown\n window.addEventListener('keydown', handleKeyPress);\n\n return () => {\n window.removeEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n useEffect(() => {\n let timerId: any;\n if (currentStep < steps.length) {\n timerId = clipTargetElementAndPositionTooltip();\n }\n\n return () => {\n if (timerId) {\n clearTimeout(timerId);\n }\n };\n }, [currentStep, steps, clipTargetElementAndPositionTooltip]);\n\n // To prevent scroll when tour is active\n useEffect(() => {\n if (currentStep < steps.length && overlayRef.current) {\n const overlay = overlayRef.current;\n\n const preventScroll = (e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n overlay.addEventListener('wheel', preventScroll, { passive: false });\n overlay.addEventListener('touchmove', preventScroll, { passive: false });\n overlay.addEventListener('scroll', preventScroll, { passive: false });\n\n return () => {\n overlay.removeEventListener('wheel', preventScroll);\n overlay.removeEventListener('touchmove', preventScroll);\n overlay.removeEventListener('scroll', preventScroll);\n };\n }\n }, [currentStep]);\n\n if (!steps || steps.length === 0) {\n return null;\n }\n\n return (\n <>\n <div\n className=\"se-design-onboarding-tour-overlay\"\n ref={overlayRef}\n data-automation-id={`${automationId}-overlay`}\n />\n\n <Tooltip\n content={\n <div className=\"se-design-onboarding-tour-tooltip-content\">\n {steps[currentStep]?.content?.illustration && (\n <img\n src={steps[currentStep].content.illustration}\n className=\"se-design-onboarding-tour-illustration\"\n alt=\"illustration\"\n />\n )}\n <div className=\"se-design-onboarding-tour-content\">\n {steps[currentStep]?.content?.title && (\n <p className=\"se-design-onboarding-tour-title\">{steps[currentStep].content.title}</p>\n )}\n {steps[currentStep]?.content?.description && (\n <p className=\"se-design-onboarding-tour-description\">{steps[currentStep].content.description}</p>\n )}\n </div>\n\n <div className=\"se-design-onboarding-tour-actions\">\n {steps.length > 1 && (\n <span className=\"steps\">\n {stepInfo.replace('{step}', `${currentStep + 1}`).replace('{total}', `${steps.length}`)}\n </span>\n )}\n <div className=\"btns-container\">\n {currentStep !== steps.length - 1 && (\n <Button\n theme=\"white\"\n type=\"link\"\n label={skip}\n automationId={`${automationId}-skip-button`}\n onClick={handleSkipTour}\n />\n )}\n <Button\n theme=\"white\"\n type=\"primary\"\n size=\"sm\"\n label={currentStep === steps.length - 1 ? (steps.length === 1 ? gotIt : finish) : next}\n automationId={`${automationId}-next-button`}\n onClick={handleNextClick}\n />\n </div>\n </div>\n </div>\n }\n tooltipSrc={<div className=\"blocker\" ref={blockerRef} />}\n tooltipSrcRef={blockerRef as React.RefObject<HTMLDivElement>}\n position={steps[currentStep]?.tooltipPosition || 'bottom-center'}\n tooltipOffset={16}\n displayOn=\"always-on\"\n isWithPortal={true}\n maxWidth={384}\n />\n </>\n );\n};\n"],"names":["React__default","useState","useRef","useCallback","useEffect","Button","Tooltip","TOUR_NAVIGATION_STEPS","gotIt","finish","next","back","OnboardingTour","steps","screenBaseElementSelector","handleCloseProductTour","tourType","automationId","highlightBorderRadius","labels","currentStep","setCurrentStep","overlayRef","blockerRef","skip","stepInfo","parentScreenElement","document","querySelector","clipTargetElementAndPositionTooltip","timerId","length","initialTargetElement","targetElementContainerSelector","targetElementSelector","initialTargetArea","getBoundingClientRect","top","left","bottom","window","innerHeight","right","innerWidth","scrollIntoView","behavior","block","setTimeout","targetElement","current","targetArea","documentHeight","Math","max","documentElement","scrollHeight","body","style","height","targetElementGap","horizontal","vertical","borderRadius","scrollY","width","documentWidth","scrollWidth","svgMask","encodeURIComponent","maskImage","webkitMaskImage","handleSkipTour","scrollTo","handleNextClick","e","preventDefault","stopPropagation","prev","tourMixPanelHandler","user_path","action_type","handlePrevClick","handleKeyPress","keyCode","key","addEventListener","removeEventListener","clearTimeout","overlay","preventScroll","passive","createElement","React","Fragment","className","ref","content","illustration","src","alt","title","description","replace","theme","type","label","onClick","size","tooltipSrc","tooltipSrcRef","position","tooltipPosition","tooltipOffset","displayOn","isWithPortal","maxWidth"],"mappings":"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"}
1
+ {"version":3,"file":"index62.js","sources":["../src/components/InfoBar/index.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { Icon } from \"../Icon\";\n\nexport interface InfoBarProps {\n className?: string;\n message: string;\n backgroundColor?: string;\n textColor?: string;\n borderColor?: string;\n actionJSX?: () => React.ReactNode;\n}\n\nexport const InfoBar: FC<InfoBarProps> = ({\n className = \"\",\n message = \"\",\n backgroundColor = 'var(--color-yellow-50)',\n textColor = 'var(--color-yellow-800)',\n borderColor = 'var(--color-yellow-200)',\n actionJSX = () => <></>\n}) => {\n\n return (\n <div\n className={`se-design-info-bar ${className} px-3 py-2 border rounded-[6px]`}\n style={{ backgroundColor, borderColor, color: textColor }}\n >\n <div className={`info-bar-message flex items-center gap-2`}>\n <div style={{ transform: 'rotate(180deg)' }}><Icon name=\"info\" stroke={textColor} /></div>\n <span style={{ color: textColor }}>{message}</span>\n </div>\n <div className={`info-bar-action ml-[22px]`}>\n {actionJSX()}\n </div>\n </div>\n );\n};"],"names":["InfoBar","className","message","backgroundColor","textColor","borderColor","actionJSX","React","createElement","Fragment","style","color","transform","Icon","name","stroke"],"mappings":";;AAYO,MAAMA,IAA4BA,CAAC;AAAA,EACxCC,WAAAA,IAAY;AAAA,EACZC,SAAAA,IAAU;AAAA,EACVC,iBAAAA,IAAkB;AAAA,EAClBC,WAAAA,IAAY;AAAA,EACZC,aAAAA,IAAc;AAAA,EACdC,WAAAA,IAAYA,MAAMC,gBAAAA,EAAAC,cAAAD,EAAAE,UAAA,IAAI;AACxB,MAGIF,gBAAAA,EAAAC,cAAA,OAAA;AAAA,EACEP,WAAW,sBAAsBA,CAAS;AAAA,EAC1CS,OAAO;AAAA,IAAEP,iBAAAA;AAAAA,IAAiBE,aAAAA;AAAAA,IAAaM,OAAOP;AAAAA,EAAAA;AAAU,GAExDG,gBAAAA,EAAAC,cAAA,OAAA;AAAA,EAAKP,WAAW;AAAA,GACdM,gBAAAA,EAAAC,cAAA,OAAA;AAAA,EAAKE,OAAO;AAAA,IAAEE,WAAW;AAAA,EAAA;AAAiB,GAAGL,gBAAAA,EAAAC,cAACK,GAAI;AAAA,EAACC,MAAK;AAAA,EAAOC,QAAQX;AAAAA,CAAY,CAAM,GACzFG,gBAAAA,EAAAC,cAAA,QAAA;AAAA,EAAME,OAAO;AAAA,IAAEC,OAAOP;AAAAA,EAAAA;AAAU,GAAIF,CAAc,CAC/C,GACLK,gBAAAA,EAAAC,cAAA,OAAA;AAAA,EAAKP,WAAW;AAAA,GACbK,EAAAA,CACE,CACF;"}