se-design 1.0.90-dev.0 → 1.0.90

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 (462) hide show
  1. package/dist/assets/style.css +1 -1
  2. package/dist/components/AnchoredOverlay/index.d.ts +41 -0
  3. package/dist/components/index.d.ts +2 -0
  4. package/dist/index.js +132 -130
  5. package/dist/index.js.map +1 -1
  6. package/dist/index100.js +1 -1
  7. package/dist/index100.js.map +1 -1
  8. package/dist/index101.js +1 -1
  9. package/dist/index101.js.map +1 -1
  10. package/dist/index102.js +1 -1
  11. package/dist/index102.js.map +1 -1
  12. package/dist/index103.js +1 -1
  13. package/dist/index103.js.map +1 -1
  14. package/dist/index104.js +1 -1
  15. package/dist/index104.js.map +1 -1
  16. package/dist/index105.js +1 -1
  17. package/dist/index105.js.map +1 -1
  18. package/dist/index106.js +1 -1
  19. package/dist/index106.js.map +1 -1
  20. package/dist/index107.js +1 -1
  21. package/dist/index107.js.map +1 -1
  22. package/dist/index108.js +1 -1
  23. package/dist/index108.js.map +1 -1
  24. package/dist/index109.js +1 -1
  25. package/dist/index109.js.map +1 -1
  26. package/dist/index11.js +1 -1
  27. package/dist/index110.js +1 -1
  28. package/dist/index110.js.map +1 -1
  29. package/dist/index111.js +1 -1
  30. package/dist/index111.js.map +1 -1
  31. package/dist/index112.js +1 -1
  32. package/dist/index112.js.map +1 -1
  33. package/dist/index113.js +1 -1
  34. package/dist/index113.js.map +1 -1
  35. package/dist/index114.js +2 -2
  36. package/dist/index114.js.map +1 -1
  37. package/dist/index115.js +1 -1
  38. package/dist/index115.js.map +1 -1
  39. package/dist/index116.js +2 -2
  40. package/dist/index116.js.map +1 -1
  41. package/dist/index117.js +1 -1
  42. package/dist/index117.js.map +1 -1
  43. package/dist/index118.js +1 -1
  44. package/dist/index118.js.map +1 -1
  45. package/dist/index119.js +2 -2
  46. package/dist/index119.js.map +1 -1
  47. package/dist/index12.js +3 -3
  48. package/dist/index120.js +1 -1
  49. package/dist/index120.js.map +1 -1
  50. package/dist/index121.js +2 -2
  51. package/dist/index121.js.map +1 -1
  52. package/dist/index122.js +1 -1
  53. package/dist/index122.js.map +1 -1
  54. package/dist/index123.js +1 -1
  55. package/dist/index123.js.map +1 -1
  56. package/dist/index124.js +1 -1
  57. package/dist/index124.js.map +1 -1
  58. package/dist/index125.js +1 -1
  59. package/dist/index125.js.map +1 -1
  60. package/dist/index126.js +2 -2
  61. package/dist/index126.js.map +1 -1
  62. package/dist/index127.js +1 -1
  63. package/dist/index127.js.map +1 -1
  64. package/dist/index128.js +2 -2
  65. package/dist/index128.js.map +1 -1
  66. package/dist/index129.js +2 -2
  67. package/dist/index129.js.map +1 -1
  68. package/dist/index13.js +3 -3
  69. package/dist/index130.js +1 -1
  70. package/dist/index130.js.map +1 -1
  71. package/dist/index131.js +2 -2
  72. package/dist/index131.js.map +1 -1
  73. package/dist/index132.js +2 -2
  74. package/dist/index132.js.map +1 -1
  75. package/dist/index133.js +1 -1
  76. package/dist/index133.js.map +1 -1
  77. package/dist/index134.js +1 -1
  78. package/dist/index134.js.map +1 -1
  79. package/dist/index135.js +1 -1
  80. package/dist/index135.js.map +1 -1
  81. package/dist/index136.js +2 -2
  82. package/dist/index136.js.map +1 -1
  83. package/dist/index137.js +2 -2
  84. package/dist/index137.js.map +1 -1
  85. package/dist/index138.js +2 -2
  86. package/dist/index138.js.map +1 -1
  87. package/dist/index139.js +1 -1
  88. package/dist/index139.js.map +1 -1
  89. package/dist/index140.js +1 -1
  90. package/dist/index140.js.map +1 -1
  91. package/dist/index141.js +1 -1
  92. package/dist/index141.js.map +1 -1
  93. package/dist/index142.js +1 -1
  94. package/dist/index142.js.map +1 -1
  95. package/dist/index143.js +1 -1
  96. package/dist/index143.js.map +1 -1
  97. package/dist/index144.js +1 -1
  98. package/dist/index144.js.map +1 -1
  99. package/dist/index145.js +1 -1
  100. package/dist/index145.js.map +1 -1
  101. package/dist/index146.js +1 -1
  102. package/dist/index146.js.map +1 -1
  103. package/dist/index147.js +2 -2
  104. package/dist/index147.js.map +1 -1
  105. package/dist/index148.js +2 -2
  106. package/dist/index148.js.map +1 -1
  107. package/dist/index149.js +1 -1
  108. package/dist/index149.js.map +1 -1
  109. package/dist/index150.js +1 -1
  110. package/dist/index150.js.map +1 -1
  111. package/dist/index151.js +1 -1
  112. package/dist/index151.js.map +1 -1
  113. package/dist/index152.js +1 -1
  114. package/dist/index152.js.map +1 -1
  115. package/dist/index153.js +1 -1
  116. package/dist/index153.js.map +1 -1
  117. package/dist/index154.js +1 -1
  118. package/dist/index154.js.map +1 -1
  119. package/dist/index155.js +1 -1
  120. package/dist/index155.js.map +1 -1
  121. package/dist/index156.js +2 -2
  122. package/dist/index156.js.map +1 -1
  123. package/dist/index157.js +1 -1
  124. package/dist/index157.js.map +1 -1
  125. package/dist/index158.js +2 -2
  126. package/dist/index158.js.map +1 -1
  127. package/dist/index159.js +2 -2
  128. package/dist/index159.js.map +1 -1
  129. package/dist/index16.js +3 -3
  130. package/dist/index160.js +2 -2
  131. package/dist/index160.js.map +1 -1
  132. package/dist/index161.js +2 -2
  133. package/dist/index161.js.map +1 -1
  134. package/dist/index162.js +1 -1
  135. package/dist/index162.js.map +1 -1
  136. package/dist/index163.js +1 -1
  137. package/dist/index163.js.map +1 -1
  138. package/dist/index164.js +1 -1
  139. package/dist/index164.js.map +1 -1
  140. package/dist/index165.js +1 -1
  141. package/dist/index165.js.map +1 -1
  142. package/dist/index166.js +1 -1
  143. package/dist/index166.js.map +1 -1
  144. package/dist/index167.js +1 -1
  145. package/dist/index167.js.map +1 -1
  146. package/dist/index168.js +1 -1
  147. package/dist/index168.js.map +1 -1
  148. package/dist/index169.js +1 -1
  149. package/dist/index169.js.map +1 -1
  150. package/dist/index170.js +1 -1
  151. package/dist/index170.js.map +1 -1
  152. package/dist/index171.js +1 -1
  153. package/dist/index171.js.map +1 -1
  154. package/dist/index172.js +1 -1
  155. package/dist/index172.js.map +1 -1
  156. package/dist/index173.js +1 -1
  157. package/dist/index173.js.map +1 -1
  158. package/dist/index174.js +1 -1
  159. package/dist/index174.js.map +1 -1
  160. package/dist/index175.js +1 -1
  161. package/dist/index175.js.map +1 -1
  162. package/dist/index176.js +1 -1
  163. package/dist/index176.js.map +1 -1
  164. package/dist/index177.js +1 -1
  165. package/dist/index177.js.map +1 -1
  166. package/dist/index178.js +1 -1
  167. package/dist/index178.js.map +1 -1
  168. package/dist/index179.js +1 -1
  169. package/dist/index179.js.map +1 -1
  170. package/dist/index18.js +3 -3
  171. package/dist/index180.js +1 -1
  172. package/dist/index180.js.map +1 -1
  173. package/dist/index181.js +1 -1
  174. package/dist/index181.js.map +1 -1
  175. package/dist/index182.js +1 -1
  176. package/dist/index182.js.map +1 -1
  177. package/dist/index183.js +1 -1
  178. package/dist/index183.js.map +1 -1
  179. package/dist/index184.js +1 -1
  180. package/dist/index184.js.map +1 -1
  181. package/dist/index185.js +1 -1
  182. package/dist/index185.js.map +1 -1
  183. package/dist/index186.js +2 -2
  184. package/dist/index186.js.map +1 -1
  185. package/dist/index187.js +2 -2
  186. package/dist/index187.js.map +1 -1
  187. package/dist/index188.js +1 -1
  188. package/dist/index188.js.map +1 -1
  189. package/dist/index189.js +1 -1
  190. package/dist/index189.js.map +1 -1
  191. package/dist/index19.js +5 -5
  192. package/dist/index190.js +2 -2
  193. package/dist/index190.js.map +1 -1
  194. package/dist/index191.js +2 -2
  195. package/dist/index191.js.map +1 -1
  196. package/dist/index192.js +1 -1
  197. package/dist/index192.js.map +1 -1
  198. package/dist/index193.js +1 -1
  199. package/dist/index193.js.map +1 -1
  200. package/dist/index194.js +1 -1
  201. package/dist/index194.js.map +1 -1
  202. package/dist/index195.js +1 -1
  203. package/dist/index195.js.map +1 -1
  204. package/dist/index196.js +1 -1
  205. package/dist/index196.js.map +1 -1
  206. package/dist/index197.js +1 -1
  207. package/dist/index197.js.map +1 -1
  208. package/dist/index198.js +1 -1
  209. package/dist/index198.js.map +1 -1
  210. package/dist/index199.js +1 -1
  211. package/dist/index199.js.map +1 -1
  212. package/dist/index20.js +96 -18
  213. package/dist/index20.js.map +1 -1
  214. package/dist/index200.js +1 -1
  215. package/dist/index200.js.map +1 -1
  216. package/dist/index201.js +2 -2
  217. package/dist/index201.js.map +1 -1
  218. package/dist/index202.js +2 -2
  219. package/dist/index202.js.map +1 -1
  220. package/dist/index203.js +2 -2
  221. package/dist/index203.js.map +1 -1
  222. package/dist/index204.js +2 -149
  223. package/dist/index204.js.map +1 -1
  224. package/dist/index205.js +149 -9
  225. package/dist/index205.js.map +1 -1
  226. package/dist/index206.js +8 -5
  227. package/dist/index206.js.map +1 -1
  228. package/dist/index207.js +5 -42
  229. package/dist/index207.js.map +1 -1
  230. package/dist/index208.js +40 -18
  231. package/dist/index208.js.map +1 -1
  232. package/dist/index209.js +24 -0
  233. package/dist/index209.js.map +1 -0
  234. package/dist/index21.js +17 -32
  235. package/dist/index21.js.map +1 -1
  236. package/dist/index216.js +24 -68
  237. package/dist/index216.js.map +1 -1
  238. package/dist/index217.js +75 -0
  239. package/dist/index217.js.map +1 -0
  240. package/dist/index22.js +33 -66
  241. package/dist/index22.js.map +1 -1
  242. package/dist/{index223.js → index224.js} +1 -1
  243. package/dist/{index223.js.map → index224.js.map} +1 -1
  244. package/dist/{index225.js → index226.js} +1 -1
  245. package/dist/{index225.js.map → index226.js.map} +1 -1
  246. package/dist/index23.js +62 -83
  247. package/dist/index23.js.map +1 -1
  248. package/dist/{index233.js → index234.js} +1 -1
  249. package/dist/{index233.js.map → index234.js.map} +1 -1
  250. package/dist/{index236.js → index237.js} +1 -1
  251. package/dist/{index236.js.map → index237.js.map} +1 -1
  252. package/dist/index24.js +85 -21
  253. package/dist/index24.js.map +1 -1
  254. package/dist/index246.js +169 -3
  255. package/dist/index246.js.map +1 -1
  256. package/dist/index247.js +7 -0
  257. package/dist/index247.js.map +1 -0
  258. package/dist/index249.js +18 -9
  259. package/dist/index249.js.map +1 -1
  260. package/dist/index25.js +19 -401
  261. package/dist/index25.js.map +1 -1
  262. package/dist/index250.js +9 -9
  263. package/dist/index250.js.map +1 -1
  264. package/dist/index251.js +9 -4
  265. package/dist/index251.js.map +1 -1
  266. package/dist/index252.js +5 -170
  267. package/dist/index252.js.map +1 -1
  268. package/dist/index253.js +170 -11
  269. package/dist/index253.js.map +1 -1
  270. package/dist/index254.js +11 -6
  271. package/dist/index254.js.map +1 -1
  272. package/dist/index255.js +5 -5
  273. package/dist/index255.js.map +1 -1
  274. package/dist/index256.js +5 -37
  275. package/dist/index256.js.map +1 -1
  276. package/dist/index257.js +38 -2
  277. package/dist/index257.js.map +1 -1
  278. package/dist/index258.js +2 -8
  279. package/dist/index258.js.map +1 -1
  280. package/dist/index259.js +7 -326
  281. package/dist/index259.js.map +1 -1
  282. package/dist/index26.js +400 -44
  283. package/dist/index26.js.map +1 -1
  284. package/dist/index260.js +324 -47
  285. package/dist/index260.js.map +1 -1
  286. package/dist/index261.js +50 -2
  287. package/dist/index261.js.map +1 -1
  288. package/dist/index262.js +2 -76
  289. package/dist/index262.js.map +1 -1
  290. package/dist/index263.js +65 -82
  291. package/dist/index263.js.map +1 -1
  292. package/dist/index264.js +89 -48
  293. package/dist/index264.js.map +1 -1
  294. package/dist/index265.js +51 -7
  295. package/dist/index265.js.map +1 -1
  296. package/dist/index266.js +7 -4
  297. package/dist/index266.js.map +1 -1
  298. package/dist/index267.js +4 -51
  299. package/dist/index267.js.map +1 -1
  300. package/dist/index268.js +52 -2
  301. package/dist/index268.js.map +1 -1
  302. package/dist/index269.js +2 -2
  303. package/dist/index27.js +48 -23
  304. package/dist/index27.js.map +1 -1
  305. package/dist/index270.js +5 -0
  306. package/dist/index270.js.map +1 -0
  307. package/dist/index28.js +21 -108
  308. package/dist/index28.js.map +1 -1
  309. package/dist/index29.js +107 -147
  310. package/dist/index29.js.map +1 -1
  311. package/dist/index3.js +3 -3
  312. package/dist/index30.js +146 -132
  313. package/dist/index30.js.map +1 -1
  314. package/dist/index31.js +136 -76
  315. package/dist/index31.js.map +1 -1
  316. package/dist/index32.js +73 -94
  317. package/dist/index32.js.map +1 -1
  318. package/dist/index33.js +95 -73
  319. package/dist/index33.js.map +1 -1
  320. package/dist/index34.js +72 -38
  321. package/dist/index34.js.map +1 -1
  322. package/dist/index35.js +40 -72
  323. package/dist/index35.js.map +1 -1
  324. package/dist/index36.js +68 -94
  325. package/dist/index36.js.map +1 -1
  326. package/dist/index37.js +98 -77
  327. package/dist/index37.js.map +1 -1
  328. package/dist/index38.js +75 -311
  329. package/dist/index38.js.map +1 -1
  330. package/dist/index39.js +313 -75
  331. package/dist/index39.js.map +1 -1
  332. package/dist/index4.js +4 -4
  333. package/dist/index40.js +72 -79
  334. package/dist/index40.js.map +1 -1
  335. package/dist/index41.js +82 -32
  336. package/dist/index41.js.map +1 -1
  337. package/dist/index42.js +26 -43
  338. package/dist/index42.js.map +1 -1
  339. package/dist/index43.js +48 -109
  340. package/dist/index43.js.map +1 -1
  341. package/dist/index44.js +104 -50
  342. package/dist/index44.js.map +1 -1
  343. package/dist/index45.js +53 -142
  344. package/dist/index45.js.map +1 -1
  345. package/dist/index46.js +137 -188
  346. package/dist/index46.js.map +1 -1
  347. package/dist/index47.js +195 -35
  348. package/dist/index47.js.map +1 -1
  349. package/dist/index48.js +34 -32
  350. package/dist/index48.js.map +1 -1
  351. package/dist/index49.js +34 -147
  352. package/dist/index49.js.map +1 -1
  353. package/dist/index50.js +130 -67
  354. package/dist/index50.js.map +1 -1
  355. package/dist/index51.js +78 -453
  356. package/dist/index51.js.map +1 -1
  357. package/dist/index52.js +459 -96
  358. package/dist/index52.js.map +1 -1
  359. package/dist/index53.js +98 -43
  360. package/dist/index53.js.map +1 -1
  361. package/dist/index54.js +40 -35
  362. package/dist/index54.js.map +1 -1
  363. package/dist/index55.js +33 -87
  364. package/dist/index55.js.map +1 -1
  365. package/dist/index56.js +88 -159
  366. package/dist/index56.js.map +1 -1
  367. package/dist/index57.js +157 -143
  368. package/dist/index57.js.map +1 -1
  369. package/dist/index58.js +149 -33
  370. package/dist/index58.js.map +1 -1
  371. package/dist/index59.js +33 -86
  372. package/dist/index59.js.map +1 -1
  373. package/dist/index6.js +125 -125
  374. package/dist/index60.js +80 -113
  375. package/dist/index60.js.map +1 -1
  376. package/dist/index61.js +114 -73
  377. package/dist/index61.js.map +1 -1
  378. package/dist/index62.js +73 -147
  379. package/dist/index62.js.map +1 -1
  380. package/dist/index63.js +146 -312
  381. package/dist/index63.js.map +1 -1
  382. package/dist/index64.js +317 -46
  383. package/dist/index64.js.map +1 -1
  384. package/dist/index65.js +45 -142
  385. package/dist/index65.js.map +1 -1
  386. package/dist/index66.js +144 -12
  387. package/dist/index66.js.map +1 -1
  388. package/dist/index67.js +10 -53
  389. package/dist/index67.js.map +1 -1
  390. package/dist/index68.js +52 -110
  391. package/dist/index68.js.map +1 -1
  392. package/dist/index69.js +111 -17
  393. package/dist/index69.js.map +1 -1
  394. package/dist/index7.js +2 -2
  395. package/dist/index70.js +17 -64
  396. package/dist/index70.js.map +1 -1
  397. package/dist/index71.js +64 -25
  398. package/dist/index71.js.map +1 -1
  399. package/dist/index72.js +24 -105
  400. package/dist/index72.js.map +1 -1
  401. package/dist/index73.js +104 -58
  402. package/dist/index73.js.map +1 -1
  403. package/dist/index74.js +60 -19
  404. package/dist/index74.js.map +1 -1
  405. package/dist/index75.js +18 -168
  406. package/dist/index75.js.map +1 -1
  407. package/dist/index76.js +171 -18
  408. package/dist/index76.js.map +1 -1
  409. package/dist/index77.js +17 -10
  410. package/dist/index77.js.map +1 -1
  411. package/dist/index78.js +11 -5
  412. package/dist/index78.js.map +1 -1
  413. package/dist/index79.js +5 -62
  414. package/dist/index79.js.map +1 -1
  415. package/dist/index80.js +58 -23
  416. package/dist/index80.js.map +1 -1
  417. package/dist/index81.js +25 -9
  418. package/dist/index81.js.map +1 -1
  419. package/dist/index82.js +14 -0
  420. package/dist/index82.js.map +1 -0
  421. package/dist/index84.js +2 -2
  422. package/dist/index84.js.map +1 -1
  423. package/dist/index85.js +2 -2
  424. package/dist/index85.js.map +1 -1
  425. package/dist/index86.js +2 -2
  426. package/dist/index86.js.map +1 -1
  427. package/dist/index87.js +2 -2
  428. package/dist/index87.js.map +1 -1
  429. package/dist/index88.js +1 -1
  430. package/dist/index88.js.map +1 -1
  431. package/dist/index89.js +1 -1
  432. package/dist/index89.js.map +1 -1
  433. package/dist/index9.js +4 -4
  434. package/dist/index90.js +1 -1
  435. package/dist/index90.js.map +1 -1
  436. package/dist/index91.js +1 -1
  437. package/dist/index91.js.map +1 -1
  438. package/dist/index92.js +1 -1
  439. package/dist/index92.js.map +1 -1
  440. package/dist/index93.js +1 -1
  441. package/dist/index93.js.map +1 -1
  442. package/dist/index94.js +1 -1
  443. package/dist/index94.js.map +1 -1
  444. package/dist/index95.js +1 -1
  445. package/dist/index95.js.map +1 -1
  446. package/dist/index96.js +1 -1
  447. package/dist/index96.js.map +1 -1
  448. package/dist/index97.js +1 -1
  449. package/dist/index97.js.map +1 -1
  450. package/dist/index98.js +1 -1
  451. package/dist/index98.js.map +1 -1
  452. package/dist/index99.js +1 -1
  453. package/dist/index99.js.map +1 -1
  454. package/package.json +1 -1
  455. package/dist/index215.js +0 -31
  456. package/dist/index215.js.map +0 -1
  457. package/dist/index245.js +0 -173
  458. package/dist/index245.js.map +0 -1
  459. package/dist/index248.js +0 -22
  460. package/dist/index248.js.map +0 -1
  461. package/dist/index83.js +0 -5
  462. package/dist/index83.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index217.js","sources":["../src/utils/a11y/useFocusSentinel.ts"],"sourcesContent":["import { useRef, useEffect, useLayoutEffect } from 'react';\n\nimport { getFirstFocusableElement, getLastFocusableElement } from './focusableElements';\nimport { consumeLastInteractedElement, consumeFocusAnchor } from './useFocusTrap';\n\nconst SENTINEL_STYLE: React.CSSProperties = {\n position: 'absolute',\n opacity: 0,\n pointerEvents: 'none',\n width: 0,\n height: 0,\n};\n\nexport interface UseFocusSentinelOptions {\n /** Whether the panel is currently open. */\n isOpen: boolean | undefined;\n /**\n * When true the hook is a no-op — dialog mode (focus trap) handles focus management instead.\n */\n isModal: boolean;\n /** Ref to the panel container element. */\n containerRef: React.RefObject<HTMLElement | null>;\n /**\n * Explicit element to restore focus to on close.\n * Overrides the automatic trigger capture.\n */\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n}\n\nexport interface SentinelProps {\n ref: React.RefObject<HTMLDivElement | null>;\n tabIndex: number;\n style: React.CSSProperties;\n 'aria-hidden': true;\n 'data-focus-sentinel': 'start' | 'end';\n onFocus: (e: React.FocusEvent) => void;\n}\n\nexport interface UseFocusSentinelReturn {\n /** Spread onto an invisible div placed before the panel content. */\n startSentinelProps: SentinelProps;\n /** Spread onto an invisible div placed after the panel content. */\n endSentinelProps: SentinelProps;\n}\n\n/**\n * Focus management for complementary (non-modal) side panels.\n *\n * Moves focus into the panel on open, restores it to the trigger on close,\n * and wraps Tab / Shift+Tab back to the trigger when focus reaches either end.\n *\n * Sentinel tabIndex values are mutated imperatively (no state) to avoid\n * re-renders. React does not touch a DOM attribute unless the JSX prop value\n * changes, so the initial tabIndex={-1} in the returned props is safe.\n */\nexport function useFocusSentinel({\n isOpen,\n isModal,\n containerRef,\n returnFocusRef,\n}: UseFocusSentinelOptions): UseFocusSentinelReturn {\n const triggerRef = useRef<HTMLElement | null>(null);\n const startSentinelRef = useRef<HTMLDivElement>(null);\n const endSentinelRef = useRef<HTMLDivElement>(null);\n\n // Capture trigger before React commits (document.activeElement is still the opener).\n // Body focus = page-load open → skip so sentinels stay inert.\n useLayoutEffect(() => {\n if (isModal || !isOpen) return;\n const trigger =\n returnFocusRef?.current ??\n consumeFocusAnchor() ??\n consumeLastInteractedElement() ??\n (document.activeElement as HTMLElement);\n if (!trigger || trigger === document.body) return;\n // iframes manage their own internal focus. The parent doc only sees the\n // <iframe> element. Calling .focus() on any parent-doc element while the\n // user is inside an iframe forcibly blurs the iframe content (kills caret\n // on textareas, cancels native <select> dropdowns). Skip capture so the\n // auto-focus on open and focus-restore on close don't run.\n if (trigger.tagName === 'IFRAME') return;\n triggerRef.current = trigger;\n if (endSentinelRef.current) endSentinelRef.current.tabIndex = 0;\n return () => {\n if (endSentinelRef.current) endSentinelRef.current.tabIndex = -1;\n };\n }, [isOpen, isModal]);\n\n // Move focus into panel on open; restore to trigger on close.\n useEffect(() => {\n if (isModal || !isOpen || !triggerRef.current) return;\n\n const rafId = requestAnimationFrame(() => {\n const first = getFirstFocusableElement({ container: containerRef.current });\n (first ?? containerRef.current)?.focus();\n // Activate start sentinel so Shift+Tab from first content returns to trigger.\n if (startSentinelRef.current) startSentinelRef.current.tabIndex = 0;\n });\n\n return () => {\n cancelAnimationFrame(rafId);\n if (startSentinelRef.current) startSentinelRef.current.tabIndex = -1;\n const trigger = triggerRef.current;\n triggerRef.current = null;\n if (trigger?.isConnected) {\n requestAnimationFrame(() => trigger.focus());\n }\n };\n }, [isOpen, isModal]);\n\n const handleStartFocus = (e: React.FocusEvent) => {\n const fromInside =\n containerRef.current?.contains(e.relatedTarget as Node) &&\n e.relatedTarget !== containerRef.current;\n if (fromInside) {\n // Shift+Tab from first content → restore trigger\n const trigger = triggerRef.current;\n if (trigger?.isConnected) trigger.focus();\n } else {\n // Natural Tab entry from outside → forward to first content,\n // deactivate so next Shift+Tab exits naturally.\n if (startSentinelRef.current) startSentinelRef.current.tabIndex = -1;\n const first = getFirstFocusableElement({ container: containerRef.current });\n (first ?? containerRef.current)?.focus();\n }\n };\n\n const handleEndFocus = (e: React.FocusEvent) => {\n const fromInside =\n containerRef.current?.contains(e.relatedTarget as Node) &&\n e.relatedTarget !== containerRef.current;\n if (fromInside) {\n // Tab from last content → restore trigger\n const trigger = triggerRef.current;\n if (trigger?.isConnected) trigger.focus();\n } else {\n // Shift+Tab entry from outside → back to last content\n const last = getLastFocusableElement({ container: containerRef.current });\n (last ?? containerRef.current)?.focus();\n }\n };\n\n return {\n startSentinelProps: {\n ref: startSentinelRef,\n tabIndex: -1,\n style: SENTINEL_STYLE,\n 'aria-hidden': true as const,\n 'data-focus-sentinel': 'start' as const,\n onFocus: handleStartFocus,\n },\n endSentinelProps: {\n ref: endSentinelRef,\n tabIndex: -1,\n style: SENTINEL_STYLE,\n 'aria-hidden': true as const,\n 'data-focus-sentinel': 'end' as const,\n onFocus: handleEndFocus,\n },\n };\n}\n"],"names":["useRef","useLayoutEffect","useEffect","getFirstFocusableElement","getLastFocusableElement","consumeFocusAnchor","consumeLastInteractedElement","SENTINEL_STYLE","position","opacity","pointerEvents","width","height","useFocusSentinel","isOpen","isModal","containerRef","returnFocusRef","triggerRef","startSentinelRef","endSentinelRef","trigger","current","document","activeElement","body","tagName","tabIndex","rafId","requestAnimationFrame","container","focus","cancelAnimationFrame","isConnected","startSentinelProps","ref","style","onFocus","handleStartFocus","e","contains","relatedTarget","endSentinelProps","handleEndFocus"],"mappings":"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"}
package/dist/index22.js CHANGED
@@ -1,69 +1,36 @@
1
- import t, { useRef as i, useEffect as L } from "react";
2
- import { TableContentLoader as O } from "./index27.js";
3
- import { announce as b } from "./index75.js";
4
- function f() {
5
- return f = Object.assign ? Object.assign.bind() : function(r) {
6
- for (var l = 1; l < arguments.length; l++) {
7
- var e = arguments[l];
8
- for (var a in e) ({}).hasOwnProperty.call(e, a) && (r[a] = e[a]);
9
- }
10
- return r;
11
- }, f.apply(null, arguments);
12
- }
13
- const _ = ({
14
- className: r = "",
15
- automationId: l = "",
16
- loading: e,
17
- headerColSpan: a = [],
18
- headerData: c,
19
- tableData: o,
20
- renderTableContentLoader: R,
21
- getTableHeaders: m,
22
- getTableBody: p,
23
- getTableFooter: v,
24
- onSortUiUpdate: d,
25
- onRowClick: h,
26
- tableId: E,
27
- ariaDescribedBy: x,
28
- ariaLabel: w,
29
- loadingAnnouncement: s,
30
- loadedAnnouncement: n,
31
- ...y
32
- }) => {
33
- const g = i(null), u = i(!1);
34
- return L(() => {
35
- e !== u.current && (u.current = e, e && s ? b(s) : !e && n && b(n));
36
- }, [e, s, n]), /* @__PURE__ */ t.createElement("div", f({
37
- className: "se-design-table-layout-wrapper flex flex-col flex-1 min-h-0" + (r.length > 0 ? ` ${r}` : "") + (e ? " table-data-loading" : "")
38
- }, y), /* @__PURE__ */ t.createElement("div", {
39
- className: "se-design-table-scroll-area flex-1 min-h-0 overflow-y-auto"
40
- }, /* @__PURE__ */ t.createElement("table", {
41
- className: "se-design-table w-full bg-[var(--color-white)] border-collapse table-fixed",
42
- ref: g,
43
- "data-automation-id": l,
44
- id: E,
45
- "aria-describedby": x,
46
- "aria-label": w
47
- }, /* @__PURE__ */ t.createElement("thead", null, /* @__PURE__ */ t.createElement("tr", null, m({
48
- headerData: c,
49
- sortData: {},
50
- onSortUiUpdate: d,
51
- loading: e
52
- }))), /* @__PURE__ */ t.createElement("tbody", null, e ? /* @__PURE__ */ t.createElement(O, {
53
- noOfColumns: c?.length,
54
- colSpan: a
55
- }) : p({
56
- tableData: o,
57
- onRowClick: h,
58
- loading: e
59
- })))), /* @__PURE__ */ t.createElement("div", {
60
- className: "se-design-table-footer w-full bg-[var(--color-white)] flex-shrink-0"
61
- }, v({
62
- tableData: o,
63
- loading: e
64
- })));
65
- };
1
+ import e from "react";
2
+ import { Popover as l } from "./index19.js";
3
+ import { Icon as s } from "./index6.js";
4
+ const t = {
5
+ base: "se-design-hamburger-menu rounded-[6px] transition-all duration-300 p-[3px] flex items-center",
6
+ active: "bg-[var(--color-blue-450)]",
7
+ hover: "hover:bg-[var(--color-blue-450)]"
8
+ }, u = ({
9
+ className: a = "",
10
+ automationId: n = "",
11
+ popoverContentAutomationId: m = "",
12
+ menuContent: o,
13
+ popoverClassName: c = ""
14
+ }) => /* @__PURE__ */ e.createElement(l, {
15
+ className: a,
16
+ position: "bottom-left",
17
+ automationId: n,
18
+ popoverContentAutomationId: m,
19
+ renderPopoverSrcElement: ({
20
+ displayPopover: r
21
+ }) => /* @__PURE__ */ e.createElement("div", {
22
+ className: `${t.base} ${r ? t.active : ""} ${t.hover}`
23
+ }, /* @__PURE__ */ e.createElement(s, {
24
+ name: "hamburger",
25
+ stroke: "var(--color-white)"
26
+ })),
27
+ renderPopoverContents: (r) => /* @__PURE__ */ e.createElement("div", {
28
+ className: `min-w-[212px] ${c}`
29
+ }, o && /* @__PURE__ */ e.createElement("div", {
30
+ className: "menu-content"
31
+ }, o(r)))
32
+ });
66
33
  export {
67
- _ as TableLayout
34
+ u as HamburgerMenu
68
35
  };
69
36
  //# sourceMappingURL=index22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index22.js","sources":["../src/components/TableLayout/index.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useRef } from 'react';\nimport { TableContentLoader } from 'components/TableContentLoader';\nimport { announce } from 'src/utils/a11y/liveAnnouncer/LiveAnnouncer';\n\nexport interface TableLayoutProps {\n className?: string;\n automationId?: string;\n loading: boolean;\n headerData: any[];\n tableData: any[];\n headerColSpan?: number[];\n renderTableContentLoader?: (noOfColumns: number) => ReactNode;\n getTableHeaders: (props: { headerData: any[]; sortData: any; onSortUiUpdate: any; loading: boolean }) => ReactNode;\n getTableBody: (props: { tableData: any[]; onRowClick: any; loading: boolean }) => ReactNode;\n getTableFooter: (props: { tableData: any[]; loading: boolean }) => ReactNode;\n onSortUiUpdate: (newSortData: any) => void;\n onRowClick: (rowData: any) => void;\n tableId: string;\n /**\n * ID of element that describes the table (e.g., sort instructions for screen readers)\n */\n ariaDescribedBy?: string;\n /**\n * Accessible name for the table element\n */\n ariaLabel?: string;\n /**\n * Announced to screen readers when loading begins.\n * Pass a translated string from the consumer (e.g. \"Loading documents\").\n */\n loadingAnnouncement?: string;\n /**\n * Announced to screen readers when loading completes.\n * Pass a translated string from the consumer (e.g. \"Documents loaded\").\n */\n loadedAnnouncement?: string;\n}\n\nexport const TableLayout: FC<TableLayoutProps> = ({\n className = '',\n automationId = '',\n loading,\n headerColSpan = [],\n headerData,\n tableData,\n renderTableContentLoader,\n getTableHeaders,\n getTableBody,\n getTableFooter,\n onSortUiUpdate,\n onRowClick,\n tableId,\n ariaDescribedBy,\n ariaLabel,\n loadingAnnouncement,\n loadedAnnouncement,\n ...props\n}) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const prevLoadingRef = useRef(false);\n\n useEffect(() => {\n if (loading === prevLoadingRef.current) return;\n prevLoadingRef.current = loading;\n if (loading && loadingAnnouncement) {\n announce(loadingAnnouncement);\n } else if (!loading && loadedAnnouncement) {\n announce(loadedAnnouncement);\n }\n }, [loading, loadingAnnouncement, loadedAnnouncement]);\n\n return (\n <div className={'se-design-table-layout-wrapper flex flex-col flex-1 min-h-0' + (className.length > 0 ? ` ${className}` : '') + (loading? ' table-data-loading' : '')} {...props}>\n <div className=\"se-design-table-scroll-area flex-1 min-h-0 overflow-y-auto\">\n <table\n className={'se-design-table w-full bg-[var(--color-white)] border-collapse table-fixed'}\n ref={tableRef}\n data-automation-id={automationId}\n id={tableId}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n >\n <thead>\n <tr>{getTableHeaders({ headerData, sortData: {}, onSortUiUpdate, loading })}</tr>\n </thead>\n <tbody>\n {loading ? (\n <TableContentLoader noOfColumns={headerData?.length} colSpan={headerColSpan} />\n ) : (\n getTableBody({ tableData, onRowClick, loading })\n )}\n </tbody>\n </table>\n </div>\n <div className=\"se-design-table-footer w-full bg-[var(--color-white)] flex-shrink-0\">\n {getTableFooter({ tableData, loading })}\n </div>\n </div>\n );\n};\n"],"names":["TableLayout","className","automationId","loading","headerColSpan","headerData","tableData","renderTableContentLoader","getTableHeaders","getTableBody","getTableFooter","onSortUiUpdate","onRowClick","tableId","ariaDescribedBy","ariaLabel","loadingAnnouncement","loadedAnnouncement","props","tableRef","useRef","prevLoadingRef","useEffect","current","announce","React","createElement","_extends","length","ref","id","sortData","TableContentLoader","noOfColumns","colSpan"],"mappings":";;;;;;;;;;;;AAsCO,MAAMA,IAAoCA,CAAC;AAAA,EAChDC,WAAAA,IAAY;AAAA,EACZC,cAAAA,IAAe;AAAA,EACfC,SAAAA;AAAAA,EACAC,eAAAA,IAAgB,CAAA;AAAA,EAChBC,YAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,0BAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,qBAAAA;AAAAA,EACAC,oBAAAA;AAAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAWC,EAAyB,IAAI,GACxCC,IAAiBD,EAAO,EAAK;AAEnCE,SAAAA,EAAU,MAAM;AACd,IAAInB,MAAYkB,EAAeE,YAC/BF,EAAeE,UAAUpB,GACrBA,KAAWa,IACbQ,EAASR,CAAmB,IACnB,CAACb,KAAWc,KACrBO,EAASP,CAAkB;AAAA,EAE/B,GAAG,CAACd,GAASa,GAAqBC,CAAkB,CAAC,GAGnDQ,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IAAK1B,WAAW,iEAAiEA,EAAU2B,SAAS,IAAI,IAAI3B,CAAS,KAAK,OAAOE,IAAS,wBAAwB;AAAA,EAAA,GAASe,CAAK,GAC9KO,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKzB,WAAU;AAAA,EAAA,GACbwB,gBAAAA,EAAAC,cAAA,SAAA;AAAA,IACEzB,WAAW;AAAA,IACX4B,KAAKV;AAAAA,IACL,sBAAoBjB;AAAAA,IACpB4B,IAAIjB;AAAAA,IACJ,oBAAkBC;AAAAA,IAClB,cAAYC;AAAAA,EAAAA,qBAEZW,cAAA,SAAA,MACED,gBAAAA,EAAAC,cAAA,MAAA,MAAKlB,EAAgB;AAAA,IAAEH,YAAAA;AAAAA,IAAY0B,UAAU,CAAA;AAAA,IAAIpB,gBAAAA;AAAAA,IAAgBR,SAAAA;AAAAA,EAAAA,CAAS,CAAM,CAC3E,GACPsB,gBAAAA,EAAAC,cAAA,SAAA,MACGvB,IACCsB,gBAAAA,EAAAC,cAACM,GAAkB;AAAA,IAACC,aAAa5B,GAAYuB;AAAAA,IAAQM,SAAS9B;AAAAA,EAAAA,CAAgB,IAE9EK,EAAa;AAAA,IAAEH,WAAAA;AAAAA,IAAWM,YAAAA;AAAAA,IAAYT,SAAAA;AAAAA,EAAAA,CAAS,CAE5C,CACF,CACJ,GACLsB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKzB,WAAU;AAAA,EAAA,GACZS,EAAe;AAAA,IAAEJ,WAAAA;AAAAA,IAAWH,SAAAA;AAAAA,EAAAA,CAAS,CACnC,CACF;AAET;"}
1
+ {"version":3,"file":"index22.js","sources":["../src/components/HamburgerMenu/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { Popover } from 'src/components/Popover';\nimport { Icon } from 'src/components/Icon';\nexport interface HamburgerMenuProps {\n className?: string;\n automationId?: string;\n popoverContentAutomationId?: string;\n menuContent?: (data: any) => React.ReactNode;\n popoverClassName?: string;\n}\n\nconst menuClasses = {\n base: 'se-design-hamburger-menu rounded-[6px] transition-all duration-300 p-[3px] flex items-center',\n active: 'bg-[var(--color-blue-450)]',\n hover: 'hover:bg-[var(--color-blue-450)]'\n};\n\nexport const HamburgerMenu: FC<HamburgerMenuProps> = ({\n className = '',\n automationId = '',\n popoverContentAutomationId = '',\n menuContent,\n popoverClassName = ''\n}) => {\n\n return (\n <Popover\n className={className}\n position='bottom-left'\n automationId={automationId}\n popoverContentAutomationId={popoverContentAutomationId}\n renderPopoverSrcElement={({ displayPopover }) => (\n <div className={`${menuClasses.base} ${displayPopover ? menuClasses.active : ''} ${menuClasses.hover}`}>\n <Icon name='hamburger' stroke={'var(--color-white)'} />\n </div>\n )}\n renderPopoverContents={(data) => (\n <div className={`min-w-[212px] ${popoverClassName}`}>\n {menuContent && <div className='menu-content'>{menuContent(data)}</div>}\n </div>\n )}\n />\n );\n};\n"],"names":["React__default","Popover","Icon","menuClasses","base","active","hover","HamburgerMenu","className","automationId","popoverContentAutomationId","menuContent","popoverClassName","React","createElement","position","renderPopoverSrcElement","displayPopover","name","stroke","renderPopoverContents","data"],"mappings":"AAYA,OAAAA,OAAA;AAAA,SAAA,WAAAC,SAAA;AAAA,SAAA,QAAAC,SAAA;AAAA,MAAMC,IAAc;AAAA,EAClBC,MAAM;AAAA,EACNC,QAAQ;AAAA,EACRC,OAAO;AACT,GAEaC,IAAwCA,CAAC;AAAA,EACpDC,WAAAA,IAAY;AAAA,EACZC,cAAAA,IAAe;AAAA,EACfC,4BAAAA,IAA6B;AAAA,EAC7BC,aAAAA;AAAAA,EACAC,kBAAAA,IAAmB;AACrB,MAGIC,gBAAAA,EAAAC,cAACb,GAAO;AAAA,EACNO,WAAAA;AAAAA,EACAO,UAAS;AAAA,EACTN,cAAAA;AAAAA,EACAC,4BAAAA;AAAAA,EACAM,yBAAyBA,CAAC;AAAA,IAAEC,gBAAAA;AAAAA,EAAAA,MAC1BJ,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKN,WAAW,GAAGL,EAAYC,IAAI,IAAIa,IAAiBd,EAAYE,SAAS,EAAE,IAAIF,EAAYG,KAAK;AAAA,EAAA,GAClGO,gBAAAA,EAAAC,cAACZ,GAAI;AAAA,IAACgB,MAAK;AAAA,IAAYC,QAAQ;AAAA,EAAA,CAAuB,CACnD;AAAA,EAEPC,uBAAwBC,CAAAA,MACtBR,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKN,WAAW,iBAAiBI,CAAgB;AAAA,EAAA,GAC9CD,KAAeE,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKN,WAAU;AAAA,EAAA,GAAgBG,EAAYU,CAAI,CAAO,CACnE;AAAA,CAER;"}
@@ -5,4 +5,4 @@ function o(...n) {
5
5
  export {
6
6
  o as mergeIds
7
7
  };
8
- //# sourceMappingURL=index223.js.map
8
+ //# sourceMappingURL=index224.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index223.js","sources":["../src/utils/mergeIds.ts"],"sourcesContent":["/**\n * Merges multiple ID strings into a single space-separated string.\n * Filters out falsy values and deduplicates IDs while preserving order.\n * \n * Useful for ARIA attributes (aria-describedby, aria-labelledby) and class names.\n * \n * @param ids - Array of id strings (or undefined/null)\n * @returns Merged space-separated id string, or undefined if no valid ids\n * \n * @example\n * mergeIds('error-1', undefined, 'helper-1', 'error-1')\n * // Returns: 'error-1 helper-1'\n */\nexport function mergeIds(...ids: (string | undefined | null)[]): string | undefined {\n const uniqueIds = [\n ...new Set(\n ids\n .filter((id): id is string => Boolean(id))\n .flatMap(id => id.trim().split(/\\s+/))\n .filter(Boolean)\n )\n ];\n \n return uniqueIds.length > 0 ? uniqueIds.join(' ') : undefined;\n}\n"],"names":["mergeIds","ids","uniqueIds","Set","filter","id","Boolean","flatMap","trim","split","length","join","undefined"],"mappings":"AAaO,SAASA,KAAYC,GAAwD;AAClF,QAAMC,IAAY,CAChB,GAAG,IAAIC,IACLF,EACGG,OAAO,CAACC,MAAqBC,EAAQD,CAAG,EACxCE,QAAQF,CAAAA,MAAMA,EAAGG,OAAOC,MAAM,KAAK,CAAC,EACpCL,OAAOE,OAAO,CACnB,CAAC;AAGH,SAAOJ,EAAUQ,SAAS,IAAIR,EAAUS,KAAK,GAAG,IAAIC;AACtD;"}
1
+ {"version":3,"file":"index224.js","sources":["../src/utils/mergeIds.ts"],"sourcesContent":["/**\n * Merges multiple ID strings into a single space-separated string.\n * Filters out falsy values and deduplicates IDs while preserving order.\n * \n * Useful for ARIA attributes (aria-describedby, aria-labelledby) and class names.\n * \n * @param ids - Array of id strings (or undefined/null)\n * @returns Merged space-separated id string, or undefined if no valid ids\n * \n * @example\n * mergeIds('error-1', undefined, 'helper-1', 'error-1')\n * // Returns: 'error-1 helper-1'\n */\nexport function mergeIds(...ids: (string | undefined | null)[]): string | undefined {\n const uniqueIds = [\n ...new Set(\n ids\n .filter((id): id is string => Boolean(id))\n .flatMap(id => id.trim().split(/\\s+/))\n .filter(Boolean)\n )\n ];\n \n return uniqueIds.length > 0 ? uniqueIds.join(' ') : undefined;\n}\n"],"names":["mergeIds","ids","uniqueIds","Set","filter","id","Boolean","flatMap","trim","split","length","join","undefined"],"mappings":"AAaO,SAASA,KAAYC,GAAwD;AAClF,QAAMC,IAAY,CAChB,GAAG,IAAIC,IACLF,EACGG,OAAO,CAACC,MAAqBC,EAAQD,CAAG,EACxCE,QAAQF,CAAAA,MAAMA,EAAGG,OAAOC,MAAM,KAAK,CAAC,EACpCL,OAAOE,OAAO,CACnB,CAAC;AAGH,SAAOJ,EAAUQ,SAAS,IAAIR,EAAUS,KAAK,GAAG,IAAIC;AACtD;"}
@@ -12,4 +12,4 @@ function n(o, u) {
12
12
  export {
13
13
  n as debounce
14
14
  };
15
- //# sourceMappingURL=index225.js.map
15
+ //# sourceMappingURL=index226.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index225.js","sources":["../src/utils/debounce.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => void>(func: T, wait: number) {\n let timeout: ReturnType<typeof setTimeout> | null;\n const debounced = (...args: Parameters<T>) => {\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n };\n debounced.cancel = () => {\n if (timeout) clearTimeout(timeout);\n timeout = null;\n };\n return debounced as T & { cancel: () => void };\n }"],"names":["debounce","func","wait","timeout","debounced","args","setTimeout","cancel"],"mappings":"AAAO,SAASA,EAA6CC,GAASC,GAAc;AAChF,MAAIC;AACJ,QAAMC,IAAYA,IAAIC,MAAwB;AAC5C,IAAIF,kBAAsBA,CAAO,GACjCA,IAAUG,WAAW,MAAM;AACzBL,MAAAA,EAAK,GAAGI,CAAI;AAAA,IACd,GAAGH,CAAI;AAAA,EACT;AACAE,SAAAA,EAAUG,SAAS,MAAM;AACvB,IAAIJ,kBAAsBA,CAAO,GACjCA,IAAU;AAAA,EACZ,GACOC;AACT;"}
1
+ {"version":3,"file":"index226.js","sources":["../src/utils/debounce.ts"],"sourcesContent":["export function debounce<T extends (...args: any[]) => void>(func: T, wait: number) {\n let timeout: ReturnType<typeof setTimeout> | null;\n const debounced = (...args: Parameters<T>) => {\n if (timeout) clearTimeout(timeout);\n timeout = setTimeout(() => {\n func(...args);\n }, wait);\n };\n debounced.cancel = () => {\n if (timeout) clearTimeout(timeout);\n timeout = null;\n };\n return debounced as T & { cancel: () => void };\n }"],"names":["debounce","func","wait","timeout","debounced","args","setTimeout","cancel"],"mappings":"AAAO,SAASA,EAA6CC,GAASC,GAAc;AAChF,MAAIC;AACJ,QAAMC,IAAYA,IAAIC,MAAwB;AAC5C,IAAIF,kBAAsBA,CAAO,GACjCA,IAAUG,WAAW,MAAM;AACzBL,MAAAA,EAAK,GAAGI,CAAI;AAAA,IACd,GAAGH,CAAI;AAAA,EACT;AACAE,SAAAA,EAAUG,SAAS,MAAM;AACvB,IAAIJ,kBAAsBA,CAAO,GACjCA,IAAU;AAAA,EACZ,GACOC;AACT;"}
package/dist/index23.js CHANGED
@@ -1,90 +1,69 @@
1
- import s, { useState as j, useEffect as K } from "react";
2
- import { useStableId as L } from "./index206.js";
3
- import { getA11yNameAttributes as q } from "./index81.js";
4
- import "./index72.js";
5
- /* empty css */
6
- function h() {
7
- return h = Object.assign ? Object.assign.bind() : function(l) {
8
- for (var i = 1; i < arguments.length; i++) {
9
- var r = arguments[i];
10
- for (var e in r) ({}).hasOwnProperty.call(r, e) && (l[e] = r[e]);
1
+ import t, { useRef as i, useEffect as L } from "react";
2
+ import { TableContentLoader as O } from "./index28.js";
3
+ import { announce as b } from "./index76.js";
4
+ function f() {
5
+ return f = Object.assign ? Object.assign.bind() : function(r) {
6
+ for (var l = 1; l < arguments.length; l++) {
7
+ var e = arguments[l];
8
+ for (var a in e) ({}).hasOwnProperty.call(e, a) && (r[a] = e[a]);
11
9
  }
12
- return l;
13
- }, h.apply(null, arguments);
10
+ return r;
11
+ }, f.apply(null, arguments);
14
12
  }
15
- const H = ({
16
- className: l = "",
17
- automationId: i = "",
18
- defaultChecked: r = !1,
19
- checked: e,
20
- disabled: n = !1,
21
- onChange: x,
22
- checkMarkType: o = "",
23
- label: u = "",
24
- disabledLabel: g = "",
25
- containerAutomationId: E = "",
26
- ariaLabel: y,
27
- ariaLabelledBy: C,
28
- ariaDescribedBy: N,
29
- ariaControls: I,
30
- tabIndex: k,
31
- ariaHidden: w = !1
13
+ const _ = ({
14
+ className: r = "",
15
+ automationId: l = "",
16
+ loading: e,
17
+ headerColSpan: a = [],
18
+ headerData: c,
19
+ tableData: o,
20
+ renderTableContentLoader: R,
21
+ getTableHeaders: m,
22
+ getTableBody: p,
23
+ getTableFooter: v,
24
+ onSortUiUpdate: d,
25
+ onRowClick: h,
26
+ tableId: E,
27
+ ariaDescribedBy: x,
28
+ ariaLabel: w,
29
+ loadingAnnouncement: s,
30
+ loadedAnnouncement: n,
31
+ ...y
32
32
  }) => {
33
- const c = e !== void 0, [t, m] = j(c ? e : r);
34
- K(() => {
35
- m(c ? e : r);
36
- }, [e, r]);
37
- const A = (a) => {
38
- n || (c || m((b) => !b), x?.(c ? !e : !t, a));
39
- }, $ = (a) => {
40
- if (!n && (a.key === "Enter" || a.key === " ")) {
41
- a.preventDefault(), a.stopPropagation();
42
- const b = c ? !e : !t;
43
- c || m(b);
44
- const d = a.currentTarget.closest("label")?.querySelector("input");
45
- d && x?.(b, {
46
- target: d,
47
- currentTarget: d
48
- });
49
- }
50
- }, D = () => n ? t && o === "tick" ? "disabled-tick" : t && o === "minus-checkbox" ? "disabled-minus-checkbox" : t && !o ? "disabled-tick" : "disabled-default" : o === "minus-checkbox" && t ? "minus-checkbox" : t ? "checked" : "unchecked", O = () => n ? "checkbox-label-disabled" : "checkbox-label", p = () => n && g ? g : u, f = L(void 0, "checkbox-input"), v = u ? `${f}-label` : void 0, S = q({
51
- ariaLabelledBy: C,
52
- internalLabelId: v,
53
- ariaLabel: y,
54
- ariaDescribedBy: N
55
- }), _ = () => o === "minus-checkbox" && t ? "mixed" : t ? "true" : "false";
56
- return /* @__PURE__ */ s.createElement("div", {
57
- className: "se-design-checkbox-ctn",
58
- "aria-hidden": w ? "true" : void 0
59
- }, /* @__PURE__ */ s.createElement("label", h({
60
- role: "checkbox",
61
- htmlFor: f,
62
- className: `se-design-checkbox ${l} ${D()}`,
63
- "data-automation-id": E || "checkbox-container",
64
- tabIndex: k !== void 0 ? k : n ? -1 : 0,
65
- "aria-checked": _(),
66
- "aria-disabled": n ? "true" : "false",
67
- "aria-controls": I
68
- }, S, {
69
- onKeyDown: $
70
- }), /* @__PURE__ */ s.createElement("input", {
71
- id: f,
72
- type: "checkbox",
73
- checked: t,
74
- onChange: A,
75
- disabled: n,
76
- tabIndex: -1,
77
- "aria-hidden": "true"
78
- }), /* @__PURE__ */ s.createElement("span", {
79
- className: "checkbox-item",
80
- "data-automation-id": i
81
- }), p()?.length > 0 && /* @__PURE__ */ s.createElement("span", {
82
- id: v,
83
- className: O(),
84
- "data-automation-id": i || (u ? `checkbox-label-${u}` : "checkbox-label")
85
- }, p())));
33
+ const g = i(null), u = i(!1);
34
+ return L(() => {
35
+ e !== u.current && (u.current = e, e && s ? b(s) : !e && n && b(n));
36
+ }, [e, s, n]), /* @__PURE__ */ t.createElement("div", f({
37
+ className: "se-design-table-layout-wrapper flex flex-col flex-1 min-h-0" + (r.length > 0 ? ` ${r}` : "") + (e ? " table-data-loading" : "")
38
+ }, y), /* @__PURE__ */ t.createElement("div", {
39
+ className: "se-design-table-scroll-area flex-1 min-h-0 overflow-y-auto"
40
+ }, /* @__PURE__ */ t.createElement("table", {
41
+ className: "se-design-table w-full bg-[var(--color-white)] border-collapse table-fixed",
42
+ ref: g,
43
+ "data-automation-id": l,
44
+ id: E,
45
+ "aria-describedby": x,
46
+ "aria-label": w
47
+ }, /* @__PURE__ */ t.createElement("thead", null, /* @__PURE__ */ t.createElement("tr", null, m({
48
+ headerData: c,
49
+ sortData: {},
50
+ onSortUiUpdate: d,
51
+ loading: e
52
+ }))), /* @__PURE__ */ t.createElement("tbody", null, e ? /* @__PURE__ */ t.createElement(O, {
53
+ noOfColumns: c?.length,
54
+ colSpan: a
55
+ }) : p({
56
+ tableData: o,
57
+ onRowClick: h,
58
+ loading: e
59
+ })))), /* @__PURE__ */ t.createElement("div", {
60
+ className: "se-design-table-footer w-full bg-[var(--color-white)] flex-shrink-0"
61
+ }, v({
62
+ tableData: o,
63
+ loading: e
64
+ })));
86
65
  };
87
66
  export {
88
- H as Checkbox
67
+ _ as TableLayout
89
68
  };
90
69
  //# sourceMappingURL=index23.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index23.js","sources":["../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { FC, useState, useEffect } from 'react';\nimport { useStableId } from '../../utils/useStableId';\nimport { getA11yNameAttributes } from '../../utils/a11y';\nimport './style.scss';\n\nexport interface CheckboxProps {\n className?: string;\n automationId?: string;\n defaultChecked?: boolean;\n /**\n * Controlled checked value. When provided, the checkbox is controlled by the parent\n * and its visual state always reflects this prop. Use `onChange` to update the parent state.\n */\n checked?: boolean;\n onChange?: (checked: boolean, e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n checkMarkType?: 'tick' | 'minus-checkbox' | '';\n label?: string;\n disabledLabel?: string;\n containerAutomationId?: string;\n /**\n * Explicit accessible name for the checkbox.\n * Used as fallback when ariaLabelledBy is not provided and no internal label exists.\n */\n ariaLabel?: string;\n /**\n * ID(s) of element(s) that label this checkbox (for screen reader association).\n * Typically used when checkbox is part of a larger labelled context.\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) that describe this checkbox (provides additional context).\n * Often used for help text or instructions.\n */\n ariaDescribedBy?: string;\n /**\n * ID of the element controlled by this checkbox (e.g. an expandable region).\n */\n ariaControls?: string;\n /**\n * Override the default tabIndex. Pass -1 when the checkbox is used as a\n * visual-only indicator inside a composite widget (e.g. listbox option).\n */\n tabIndex?: number;\n /**\n * When true, sets aria-hidden=\"true\" on the checkbox container so the\n * checkbox role and state are hidden from assistive technology. Use when\n * the checkbox is purely visual (e.g. inside a role=\"option\" that already\n * conveys selection state via aria-selected).\n */\n ariaHidden?: boolean;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({\n className = '',\n automationId = '',\n defaultChecked = false,\n checked,\n disabled = false,\n onChange,\n checkMarkType = '',\n label = '',\n disabledLabel = '',\n containerAutomationId = '',\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaControls,\n tabIndex: tabIndexProp,\n ariaHidden = false\n}) => {\n const isControlled = checked !== undefined;\n const [isChecked, setIsChecked] = useState(isControlled ? checked : defaultChecked);\n\n useEffect(() => {\n if (isControlled) {\n setIsChecked(checked!);\n } else {\n setIsChecked(defaultChecked);\n }\n }, [checked, defaultChecked]);\n\n const handleClick = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) {\n setIsChecked((prev) => !prev);\n }\n onChange?.(isControlled ? !checked : !isChecked, e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLLabelElement | HTMLSpanElement>) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n const newChecked = isControlled ? !checked : !isChecked;\n if (!isControlled) {\n setIsChecked(newChecked);\n }\n\n // Create a proper synthetic event for the onChange callback\n const inputElement = e.currentTarget.closest('label')?.querySelector('input');\n if (inputElement) {\n const syntheticEvent = {\n target: inputElement,\n currentTarget: inputElement\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(newChecked, syntheticEvent);\n }\n }\n };\n\n const getCheckBoxClassName = () => {\n // Handle disabled states with proper checked status\n if (disabled) {\n if (isChecked && checkMarkType === 'tick') return 'disabled-tick';\n if (isChecked && checkMarkType === 'minus-checkbox') return 'disabled-minus-checkbox';\n if (isChecked && !checkMarkType) return 'disabled-tick'; // Default to tick for checked disabled\n return 'disabled-default'; // Unchecked disabled\n }\n\n // Handle enabled states\n if (checkMarkType === 'minus-checkbox' && isChecked) return 'minus-checkbox';\n return isChecked ? 'checked' : 'unchecked';\n };\n\n const getLabelClassName = () => {\n return disabled ? 'checkbox-label-disabled' : 'checkbox-label';\n };\n\n const getLabelText = () => {\n if (disabled && disabledLabel) {\n return disabledLabel;\n }\n return label;\n };\n\n // Generate stable IDs (persists across renders)\n const inputId = useStableId(undefined, 'checkbox-input');\n const labelId = label ? `${inputId}-label` : undefined;\n\n const a11yNameAttributes = getA11yNameAttributes({\n ariaLabelledBy,\n internalLabelId: labelId,\n ariaLabel,\n ariaDescribedBy\n });\n\n // Determine aria-checked value: \"mixed\" for indeterminate, \"true\" for checked, \"false\" for unchecked\n const getAriaChecked = () => {\n if (checkMarkType === 'minus-checkbox' && isChecked) {\n return 'mixed'; // Indeterminate/half-checked state\n }\n return isChecked ? 'true' : 'false';\n };\n\n return (\n <div className=\"se-design-checkbox-ctn\" aria-hidden={ariaHidden ? 'true' : undefined}>\n <label\n role=\"checkbox\"\n htmlFor={inputId}\n className={`se-design-checkbox ${className} ${getCheckBoxClassName()}`}\n data-automation-id={containerAutomationId || 'checkbox-container'}\n tabIndex={tabIndexProp !== undefined ? tabIndexProp : disabled ? -1 : 0}\n aria-checked={getAriaChecked()}\n aria-disabled={disabled ? 'true' : 'false'}\n aria-controls={ariaControls}\n {...a11yNameAttributes}\n onKeyDown={handleKeyDown}\n >\n <input\n id={inputId}\n type=\"checkbox\"\n checked={isChecked}\n onChange={handleClick}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n <span className=\"checkbox-item\" data-automation-id={automationId}></span>\n {getLabelText()?.length > 0 && (\n <span\n id={labelId}\n className={getLabelClassName()}\n data-automation-id={automationId || (label ? `checkbox-label-${label}` : 'checkbox-label')}\n >\n {getLabelText()}\n </span>\n )}\n </label>\n </div>\n );\n};\n"],"names":["Checkbox","className","automationId","defaultChecked","checked","disabled","onChange","checkMarkType","label","disabledLabel","containerAutomationId","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaControls","tabIndex","tabIndexProp","ariaHidden","isControlled","undefined","isChecked","setIsChecked","useState","useEffect","handleClick","e","prev","handleKeyDown","key","preventDefault","stopPropagation","newChecked","inputElement","currentTarget","closest","querySelector","target","getCheckBoxClassName","getLabelClassName","getLabelText","inputId","useStableId","labelId","a11yNameAttributes","getA11yNameAttributes","internalLabelId","getAriaChecked","React","createElement","_extends","role","htmlFor","onKeyDown","id","type","length"],"mappings":"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"}
1
+ {"version":3,"file":"index23.js","sources":["../src/components/TableLayout/index.tsx"],"sourcesContent":["import React, { FC, ReactNode, useEffect, useRef } from 'react';\nimport { TableContentLoader } from 'components/TableContentLoader';\nimport { announce } from 'src/utils/a11y/liveAnnouncer/LiveAnnouncer';\n\nexport interface TableLayoutProps {\n className?: string;\n automationId?: string;\n loading: boolean;\n headerData: any[];\n tableData: any[];\n headerColSpan?: number[];\n renderTableContentLoader?: (noOfColumns: number) => ReactNode;\n getTableHeaders: (props: { headerData: any[]; sortData: any; onSortUiUpdate: any; loading: boolean }) => ReactNode;\n getTableBody: (props: { tableData: any[]; onRowClick: any; loading: boolean }) => ReactNode;\n getTableFooter: (props: { tableData: any[]; loading: boolean }) => ReactNode;\n onSortUiUpdate: (newSortData: any) => void;\n onRowClick: (rowData: any) => void;\n tableId: string;\n /**\n * ID of element that describes the table (e.g., sort instructions for screen readers)\n */\n ariaDescribedBy?: string;\n /**\n * Accessible name for the table element\n */\n ariaLabel?: string;\n /**\n * Announced to screen readers when loading begins.\n * Pass a translated string from the consumer (e.g. \"Loading documents\").\n */\n loadingAnnouncement?: string;\n /**\n * Announced to screen readers when loading completes.\n * Pass a translated string from the consumer (e.g. \"Documents loaded\").\n */\n loadedAnnouncement?: string;\n}\n\nexport const TableLayout: FC<TableLayoutProps> = ({\n className = '',\n automationId = '',\n loading,\n headerColSpan = [],\n headerData,\n tableData,\n renderTableContentLoader,\n getTableHeaders,\n getTableBody,\n getTableFooter,\n onSortUiUpdate,\n onRowClick,\n tableId,\n ariaDescribedBy,\n ariaLabel,\n loadingAnnouncement,\n loadedAnnouncement,\n ...props\n}) => {\n const tableRef = useRef<HTMLTableElement>(null);\n const prevLoadingRef = useRef(false);\n\n useEffect(() => {\n if (loading === prevLoadingRef.current) return;\n prevLoadingRef.current = loading;\n if (loading && loadingAnnouncement) {\n announce(loadingAnnouncement);\n } else if (!loading && loadedAnnouncement) {\n announce(loadedAnnouncement);\n }\n }, [loading, loadingAnnouncement, loadedAnnouncement]);\n\n return (\n <div className={'se-design-table-layout-wrapper flex flex-col flex-1 min-h-0' + (className.length > 0 ? ` ${className}` : '') + (loading? ' table-data-loading' : '')} {...props}>\n <div className=\"se-design-table-scroll-area flex-1 min-h-0 overflow-y-auto\">\n <table\n className={'se-design-table w-full bg-[var(--color-white)] border-collapse table-fixed'}\n ref={tableRef}\n data-automation-id={automationId}\n id={tableId}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n >\n <thead>\n <tr>{getTableHeaders({ headerData, sortData: {}, onSortUiUpdate, loading })}</tr>\n </thead>\n <tbody>\n {loading ? (\n <TableContentLoader noOfColumns={headerData?.length} colSpan={headerColSpan} />\n ) : (\n getTableBody({ tableData, onRowClick, loading })\n )}\n </tbody>\n </table>\n </div>\n <div className=\"se-design-table-footer w-full bg-[var(--color-white)] flex-shrink-0\">\n {getTableFooter({ tableData, loading })}\n </div>\n </div>\n );\n};\n"],"names":["TableLayout","className","automationId","loading","headerColSpan","headerData","tableData","renderTableContentLoader","getTableHeaders","getTableBody","getTableFooter","onSortUiUpdate","onRowClick","tableId","ariaDescribedBy","ariaLabel","loadingAnnouncement","loadedAnnouncement","props","tableRef","useRef","prevLoadingRef","useEffect","current","announce","React","createElement","_extends","length","ref","id","sortData","TableContentLoader","noOfColumns","colSpan"],"mappings":";;;;;;;;;;;;AAsCO,MAAMA,IAAoCA,CAAC;AAAA,EAChDC,WAAAA,IAAY;AAAA,EACZC,cAAAA,IAAe;AAAA,EACfC,SAAAA;AAAAA,EACAC,eAAAA,IAAgB,CAAA;AAAA,EAChBC,YAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,0BAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,iBAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,qBAAAA;AAAAA,EACAC,oBAAAA;AAAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAWC,EAAyB,IAAI,GACxCC,IAAiBD,EAAO,EAAK;AAEnCE,SAAAA,EAAU,MAAM;AACd,IAAInB,MAAYkB,EAAeE,YAC/BF,EAAeE,UAAUpB,GACrBA,KAAWa,IACbQ,EAASR,CAAmB,IACnB,CAACb,KAAWc,KACrBO,EAASP,CAAkB;AAAA,EAE/B,GAAG,CAACd,GAASa,GAAqBC,CAAkB,CAAC,GAGnDQ,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IAAK1B,WAAW,iEAAiEA,EAAU2B,SAAS,IAAI,IAAI3B,CAAS,KAAK,OAAOE,IAAS,wBAAwB;AAAA,EAAA,GAASe,CAAK,GAC9KO,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKzB,WAAU;AAAA,EAAA,GACbwB,gBAAAA,EAAAC,cAAA,SAAA;AAAA,IACEzB,WAAW;AAAA,IACX4B,KAAKV;AAAAA,IACL,sBAAoBjB;AAAAA,IACpB4B,IAAIjB;AAAAA,IACJ,oBAAkBC;AAAAA,IAClB,cAAYC;AAAAA,EAAAA,qBAEZW,cAAA,SAAA,MACED,gBAAAA,EAAAC,cAAA,MAAA,MAAKlB,EAAgB;AAAA,IAAEH,YAAAA;AAAAA,IAAY0B,UAAU,CAAA;AAAA,IAAIpB,gBAAAA;AAAAA,IAAgBR,SAAAA;AAAAA,EAAAA,CAAS,CAAM,CAC3E,GACPsB,gBAAAA,EAAAC,cAAA,SAAA,MACGvB,IACCsB,gBAAAA,EAAAC,cAACM,GAAkB;AAAA,IAACC,aAAa5B,GAAYuB;AAAAA,IAAQM,SAAS9B;AAAAA,EAAAA,CAAgB,IAE9EK,EAAa;AAAA,IAAEH,WAAAA;AAAAA,IAAWM,YAAAA;AAAAA,IAAYT,SAAAA;AAAAA,EAAAA,CAAS,CAE5C,CACF,CACJ,GACLsB,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IAAKzB,WAAU;AAAA,EAAA,GACZS,EAAe;AAAA,IAAEJ,WAAAA;AAAAA,IAAWH,SAAAA;AAAAA,EAAAA,CAAS,CACnC,CACF;AAET;"}
@@ -1233,4 +1233,4 @@ const e = [
1233
1233
  export {
1234
1234
  e as default
1235
1235
  };
1236
- //# sourceMappingURL=index233.js.map
1236
+ //# sourceMappingURL=index234.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index233.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index234.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -43,4 +43,4 @@ g.displayName = "TabButton";
43
43
  export {
44
44
  g as TabButton
45
45
  };
46
- //# sourceMappingURL=index236.js.map
46
+ //# sourceMappingURL=index237.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index236.js","sources":["../src/components/NavigationBar/TabButton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { Button } from '../Button';\n\nexport interface TabButtonProps {\n id: string;\n label: string;\n isSelected: boolean;\n isDisabled?: boolean;\n panelId?: string;\n tabIndex: number;\n className?: string;\n automationId?: string;\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onFocus: () => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * Internal TabButton component for NavigationBar.\n * Uses Button (unstyled) internally for consistent activation handling.\n * Supports forwardRef for focus management (roving tabindex).\n */\nexport const TabButton = forwardRef<HTMLButtonElement, TabButtonProps>(\n (\n {\n id,\n label,\n isSelected,\n isDisabled = false,\n panelId,\n tabIndex,\n className = '',\n automationId,\n onClick,\n onFocus,\n onKeyDown\n },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n type=\"unstyled\"\n label={label}\n disabled={isDisabled}\n onClick={onClick}\n className={className}\n automationId={automationId}\n role=\"tab\"\n id={id}\n aria-selected={isSelected}\n {...(panelId ? { 'aria-controls': panelId } : {})}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n />\n );\n }\n);\n\nTabButton.displayName = 'TabButton';\n"],"names":["TabButton","id","label","isSelected","isDisabled","panelId","tabIndex","className","automationId","onClick","onFocus","onKeyDown","ref","React","createElement","Button","_extends","type","disabled","role","displayName"],"mappings":";;;;;;;;;;;AAsBO,MAAMA,sBACX,CACE;AAAA,EACEC,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,SAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,cAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,WAAAA;AACF,GACAC,MAGEC,gBAAAA,EAAAC,cAACC,GAAMC,EAAA;AAAA,EACLJ,KAAAA;AAAAA,EACAK,MAAK;AAAA,EACLf,OAAAA;AAAAA,EACAgB,UAAUd;AAAAA,EACVK,SAAAA;AAAAA,EACAF,WAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAW,MAAK;AAAA,EACLlB,IAAAA;AAAAA,EACA,iBAAeE;AAAAA,GACVE,IAAU;AAAA,EAAE,iBAAiBA;AAAAA,IAAY,IAAE;AAAA,EAChDC,UAAAA;AAAAA,EACAI,SAAAA;AAAAA,EACAC,WAAAA;AAAAA,CAAqB,CACtB,CAGP;AAEAX,EAAUoB,cAAc;"}
1
+ {"version":3,"file":"index237.js","sources":["../src/components/NavigationBar/TabButton.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { Button } from '../Button';\n\nexport interface TabButtonProps {\n id: string;\n label: string;\n isSelected: boolean;\n isDisabled?: boolean;\n panelId?: string;\n tabIndex: number;\n className?: string;\n automationId?: string;\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onFocus: () => void;\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * Internal TabButton component for NavigationBar.\n * Uses Button (unstyled) internally for consistent activation handling.\n * Supports forwardRef for focus management (roving tabindex).\n */\nexport const TabButton = forwardRef<HTMLButtonElement, TabButtonProps>(\n (\n {\n id,\n label,\n isSelected,\n isDisabled = false,\n panelId,\n tabIndex,\n className = '',\n automationId,\n onClick,\n onFocus,\n onKeyDown\n },\n ref\n ) => {\n return (\n <Button\n ref={ref}\n type=\"unstyled\"\n label={label}\n disabled={isDisabled}\n onClick={onClick}\n className={className}\n automationId={automationId}\n role=\"tab\"\n id={id}\n aria-selected={isSelected}\n {...(panelId ? { 'aria-controls': panelId } : {})}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n />\n );\n }\n);\n\nTabButton.displayName = 'TabButton';\n"],"names":["TabButton","id","label","isSelected","isDisabled","panelId","tabIndex","className","automationId","onClick","onFocus","onKeyDown","ref","React","createElement","Button","_extends","type","disabled","role","displayName"],"mappings":";;;;;;;;;;;AAsBO,MAAMA,sBACX,CACE;AAAA,EACEC,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,SAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,cAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,WAAAA;AACF,GACAC,MAGEC,gBAAAA,EAAAC,cAACC,GAAMC,EAAA;AAAA,EACLJ,KAAAA;AAAAA,EACAK,MAAK;AAAA,EACLf,OAAAA;AAAAA,EACAgB,UAAUd;AAAAA,EACVK,SAAAA;AAAAA,EACAF,WAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAW,MAAK;AAAA,EACLlB,IAAAA;AAAAA,EACA,iBAAeE;AAAAA,GACVE,IAAU;AAAA,EAAE,iBAAiBA;AAAAA,IAAY,IAAE;AAAA,EAChDC,UAAAA;AAAAA,EACAI,SAAAA;AAAAA,EACAC,WAAAA;AAAAA,CAAqB,CACtB,CAGP;AAEAX,EAAUoB,cAAc;"}
package/dist/index24.js CHANGED
@@ -1,26 +1,90 @@
1
- import e from "react";
2
- import { Badge as c } from "./index10.js";
3
- const m = (t) => {
4
- const {
5
- label: a,
6
- color: l,
7
- onClick: r = () => {
8
- },
9
- tag: o
10
- } = t;
11
- return /* @__PURE__ */ e.createElement("div", {
12
- className: "se-design-color-coded-label flex items-center gap-2",
13
- onClick: r
14
- }, l && /* @__PURE__ */ e.createElement("span", {
15
- className: "w-[15px] h-[15px] rounded-[3px] inline-block",
16
- style: {
17
- backgroundColor: l
1
+ import s, { useState as j, useEffect as K } from "react";
2
+ import { useStableId as L } from "./index207.js";
3
+ import { getA11yNameAttributes as q } from "./index82.js";
4
+ import "./index73.js";
5
+ /* empty css */
6
+ function h() {
7
+ return h = Object.assign ? Object.assign.bind() : function(l) {
8
+ for (var i = 1; i < arguments.length; i++) {
9
+ var r = arguments[i];
10
+ for (var e in r) ({}).hasOwnProperty.call(r, e) && (l[e] = r[e]);
18
11
  }
19
- }), /* @__PURE__ */ e.createElement("div", null, a), o && /* @__PURE__ */ e.createElement(c, {
20
- label: o
21
- }));
12
+ return l;
13
+ }, h.apply(null, arguments);
14
+ }
15
+ const H = ({
16
+ className: l = "",
17
+ automationId: i = "",
18
+ defaultChecked: r = !1,
19
+ checked: e,
20
+ disabled: n = !1,
21
+ onChange: x,
22
+ checkMarkType: o = "",
23
+ label: u = "",
24
+ disabledLabel: g = "",
25
+ containerAutomationId: E = "",
26
+ ariaLabel: y,
27
+ ariaLabelledBy: C,
28
+ ariaDescribedBy: N,
29
+ ariaControls: I,
30
+ tabIndex: k,
31
+ ariaHidden: w = !1
32
+ }) => {
33
+ const c = e !== void 0, [t, m] = j(c ? e : r);
34
+ K(() => {
35
+ m(c ? e : r);
36
+ }, [e, r]);
37
+ const A = (a) => {
38
+ n || (c || m((b) => !b), x?.(c ? !e : !t, a));
39
+ }, $ = (a) => {
40
+ if (!n && (a.key === "Enter" || a.key === " ")) {
41
+ a.preventDefault(), a.stopPropagation();
42
+ const b = c ? !e : !t;
43
+ c || m(b);
44
+ const d = a.currentTarget.closest("label")?.querySelector("input");
45
+ d && x?.(b, {
46
+ target: d,
47
+ currentTarget: d
48
+ });
49
+ }
50
+ }, D = () => n ? t && o === "tick" ? "disabled-tick" : t && o === "minus-checkbox" ? "disabled-minus-checkbox" : t && !o ? "disabled-tick" : "disabled-default" : o === "minus-checkbox" && t ? "minus-checkbox" : t ? "checked" : "unchecked", O = () => n ? "checkbox-label-disabled" : "checkbox-label", p = () => n && g ? g : u, f = L(void 0, "checkbox-input"), v = u ? `${f}-label` : void 0, S = q({
51
+ ariaLabelledBy: C,
52
+ internalLabelId: v,
53
+ ariaLabel: y,
54
+ ariaDescribedBy: N
55
+ }), _ = () => o === "minus-checkbox" && t ? "mixed" : t ? "true" : "false";
56
+ return /* @__PURE__ */ s.createElement("div", {
57
+ className: "se-design-checkbox-ctn",
58
+ "aria-hidden": w ? "true" : void 0
59
+ }, /* @__PURE__ */ s.createElement("label", h({
60
+ role: "checkbox",
61
+ htmlFor: f,
62
+ className: `se-design-checkbox ${l} ${D()}`,
63
+ "data-automation-id": E || "checkbox-container",
64
+ tabIndex: k !== void 0 ? k : n ? -1 : 0,
65
+ "aria-checked": _(),
66
+ "aria-disabled": n ? "true" : "false",
67
+ "aria-controls": I
68
+ }, S, {
69
+ onKeyDown: $
70
+ }), /* @__PURE__ */ s.createElement("input", {
71
+ id: f,
72
+ type: "checkbox",
73
+ checked: t,
74
+ onChange: A,
75
+ disabled: n,
76
+ tabIndex: -1,
77
+ "aria-hidden": "true"
78
+ }), /* @__PURE__ */ s.createElement("span", {
79
+ className: "checkbox-item",
80
+ "data-automation-id": i
81
+ }), p()?.length > 0 && /* @__PURE__ */ s.createElement("span", {
82
+ id: v,
83
+ className: O(),
84
+ "data-automation-id": i || (u ? `checkbox-label-${u}` : "checkbox-label")
85
+ }, p())));
22
86
  };
23
87
  export {
24
- m as ColorCodedLabel
88
+ H as Checkbox
25
89
  };
26
90
  //# sourceMappingURL=index24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index24.js","sources":["../src/components/ColorCodedLabel/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport { Badge } from 'src/components/Badge';\n\nexport type ColorCodedLabelProps = {\n label: string;\n tag?: string;\n color?: string;\n onClick?: () => void;\n};\n\nexport const ColorCodedLabel: FC<ColorCodedLabelProps> = (props) => {\n const { label, color, onClick = () => {}, tag } = props;\n return (\n <div\n className=\"se-design-color-coded-label flex items-center gap-2\"\n onClick={onClick}\n >\n {color && <span className=\"w-[15px] h-[15px] rounded-[3px] inline-block\" style={{ backgroundColor: color }}></span>}\n <div>{label}</div>\n {tag && <Badge label={tag} />}\n </div>\n );\n};\n"],"names":["React__default","Badge","ColorCodedLabel","props","label","color","onClick","tag","React","createElement","className","style","backgroundColor"],"mappings":"AAUO,OAAAA,OAAA;AAAA,SAAA,SAAAC,SAAA;AAAA,MAAMC,IAA6CC,CAAAA,MAAU;AAClE,QAAM;AAAA,IAAEC,OAAAA;AAAAA,IAAOC,OAAAA;AAAAA,IAAOC,SAAAA,IAAUA,MAAM;AAAA,IAAC;AAAA,IAAGC,KAAAA;AAAAA,EAAAA,IAAQJ;AAClD,SACEK,gBAAAA,EAAAC,cAAA,OAAA;AAAA,IACEC,WAAU;AAAA,IACVJ,SAAAA;AAAAA,EAAAA,GAECD,KAASG,gBAAAA,EAAAC,cAAA,QAAA;AAAA,IAAMC,WAAU;AAAA,IAA+CC,OAAO;AAAA,MAAEC,iBAAiBP;AAAAA,IAAAA;AAAAA,EAAM,CAAS,GAClHG,gBAAAA,EAAAC,cAAA,OAAA,MAAML,CAAW,GAChBG,KAAOC,gBAAAA,EAAAC,cAACR,GAAK;AAAA,IAACG,OAAOG;AAAAA,EAAAA,CAAM,CACzB;AAET;"}
1
+ {"version":3,"file":"index24.js","sources":["../src/components/Checkbox/index.tsx"],"sourcesContent":["import React, { FC, useState, useEffect } from 'react';\nimport { useStableId } from '../../utils/useStableId';\nimport { getA11yNameAttributes } from '../../utils/a11y';\nimport './style.scss';\n\nexport interface CheckboxProps {\n className?: string;\n automationId?: string;\n defaultChecked?: boolean;\n /**\n * Controlled checked value. When provided, the checkbox is controlled by the parent\n * and its visual state always reflects this prop. Use `onChange` to update the parent state.\n */\n checked?: boolean;\n onChange?: (checked: boolean, e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n checkMarkType?: 'tick' | 'minus-checkbox' | '';\n label?: string;\n disabledLabel?: string;\n containerAutomationId?: string;\n /**\n * Explicit accessible name for the checkbox.\n * Used as fallback when ariaLabelledBy is not provided and no internal label exists.\n */\n ariaLabel?: string;\n /**\n * ID(s) of element(s) that label this checkbox (for screen reader association).\n * Typically used when checkbox is part of a larger labelled context.\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) that describe this checkbox (provides additional context).\n * Often used for help text or instructions.\n */\n ariaDescribedBy?: string;\n /**\n * ID of the element controlled by this checkbox (e.g. an expandable region).\n */\n ariaControls?: string;\n /**\n * Override the default tabIndex. Pass -1 when the checkbox is used as a\n * visual-only indicator inside a composite widget (e.g. listbox option).\n */\n tabIndex?: number;\n /**\n * When true, sets aria-hidden=\"true\" on the checkbox container so the\n * checkbox role and state are hidden from assistive technology. Use when\n * the checkbox is purely visual (e.g. inside a role=\"option\" that already\n * conveys selection state via aria-selected).\n */\n ariaHidden?: boolean;\n}\n\nexport const Checkbox: FC<CheckboxProps> = ({\n className = '',\n automationId = '',\n defaultChecked = false,\n checked,\n disabled = false,\n onChange,\n checkMarkType = '',\n label = '',\n disabledLabel = '',\n containerAutomationId = '',\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaControls,\n tabIndex: tabIndexProp,\n ariaHidden = false\n}) => {\n const isControlled = checked !== undefined;\n const [isChecked, setIsChecked] = useState(isControlled ? checked : defaultChecked);\n\n useEffect(() => {\n if (isControlled) {\n setIsChecked(checked!);\n } else {\n setIsChecked(defaultChecked);\n }\n }, [checked, defaultChecked]);\n\n const handleClick = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) return;\n if (!isControlled) {\n setIsChecked((prev) => !prev);\n }\n onChange?.(isControlled ? !checked : !isChecked, e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLLabelElement | HTMLSpanElement>) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n const newChecked = isControlled ? !checked : !isChecked;\n if (!isControlled) {\n setIsChecked(newChecked);\n }\n\n // Create a proper synthetic event for the onChange callback\n const inputElement = e.currentTarget.closest('label')?.querySelector('input');\n if (inputElement) {\n const syntheticEvent = {\n target: inputElement,\n currentTarget: inputElement\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(newChecked, syntheticEvent);\n }\n }\n };\n\n const getCheckBoxClassName = () => {\n // Handle disabled states with proper checked status\n if (disabled) {\n if (isChecked && checkMarkType === 'tick') return 'disabled-tick';\n if (isChecked && checkMarkType === 'minus-checkbox') return 'disabled-minus-checkbox';\n if (isChecked && !checkMarkType) return 'disabled-tick'; // Default to tick for checked disabled\n return 'disabled-default'; // Unchecked disabled\n }\n\n // Handle enabled states\n if (checkMarkType === 'minus-checkbox' && isChecked) return 'minus-checkbox';\n return isChecked ? 'checked' : 'unchecked';\n };\n\n const getLabelClassName = () => {\n return disabled ? 'checkbox-label-disabled' : 'checkbox-label';\n };\n\n const getLabelText = () => {\n if (disabled && disabledLabel) {\n return disabledLabel;\n }\n return label;\n };\n\n // Generate stable IDs (persists across renders)\n const inputId = useStableId(undefined, 'checkbox-input');\n const labelId = label ? `${inputId}-label` : undefined;\n\n const a11yNameAttributes = getA11yNameAttributes({\n ariaLabelledBy,\n internalLabelId: labelId,\n ariaLabel,\n ariaDescribedBy\n });\n\n // Determine aria-checked value: \"mixed\" for indeterminate, \"true\" for checked, \"false\" for unchecked\n const getAriaChecked = () => {\n if (checkMarkType === 'minus-checkbox' && isChecked) {\n return 'mixed'; // Indeterminate/half-checked state\n }\n return isChecked ? 'true' : 'false';\n };\n\n return (\n <div className=\"se-design-checkbox-ctn\" aria-hidden={ariaHidden ? 'true' : undefined}>\n <label\n role=\"checkbox\"\n htmlFor={inputId}\n className={`se-design-checkbox ${className} ${getCheckBoxClassName()}`}\n data-automation-id={containerAutomationId || 'checkbox-container'}\n tabIndex={tabIndexProp !== undefined ? tabIndexProp : disabled ? -1 : 0}\n aria-checked={getAriaChecked()}\n aria-disabled={disabled ? 'true' : 'false'}\n aria-controls={ariaControls}\n {...a11yNameAttributes}\n onKeyDown={handleKeyDown}\n >\n <input\n id={inputId}\n type=\"checkbox\"\n checked={isChecked}\n onChange={handleClick}\n disabled={disabled}\n tabIndex={-1}\n aria-hidden=\"true\"\n />\n <span className=\"checkbox-item\" data-automation-id={automationId}></span>\n {getLabelText()?.length > 0 && (\n <span\n id={labelId}\n className={getLabelClassName()}\n data-automation-id={automationId || (label ? `checkbox-label-${label}` : 'checkbox-label')}\n >\n {getLabelText()}\n </span>\n )}\n </label>\n </div>\n );\n};\n"],"names":["Checkbox","className","automationId","defaultChecked","checked","disabled","onChange","checkMarkType","label","disabledLabel","containerAutomationId","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaControls","tabIndex","tabIndexProp","ariaHidden","isControlled","undefined","isChecked","setIsChecked","useState","useEffect","handleClick","e","prev","handleKeyDown","key","preventDefault","stopPropagation","newChecked","inputElement","currentTarget","closest","querySelector","target","getCheckBoxClassName","getLabelClassName","getLabelText","inputId","useStableId","labelId","a11yNameAttributes","getA11yNameAttributes","internalLabelId","getAriaChecked","React","createElement","_extends","role","htmlFor","onKeyDown","id","type","length"],"mappings":"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"}