se-design 1.0.59 → 1.0.61-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/dist/assets/colors.css +2 -2
  2. package/dist/assets/icons/checkbox-disabled-minus.svg +1 -1
  3. package/dist/assets/icons/checkbox-disabled-tick.svg +1 -1
  4. package/dist/assets/icons/checkbox-fill.svg +1 -1
  5. package/dist/assets/icons/checkbox-hover-fill.svg +2 -2
  6. package/dist/assets/icons/sort-asc.svg +3 -4
  7. package/dist/assets/icons/sort-desc.svg +2 -3
  8. package/dist/assets/style.css +1 -1
  9. package/dist/components/AutoCompleteInput/index.d.ts +37 -7
  10. package/dist/components/DropdownWithInputTags/index.d.ts +7 -1
  11. package/dist/components/Header/index.d.ts +1 -0
  12. package/dist/components/OTPInput/index.d.ts +1 -0
  13. package/dist/components/PhoneInput/index.d.ts +19 -0
  14. package/dist/components/RadioGroup/index.d.ts +17 -0
  15. package/dist/components/SidebarOverlay/index.d.ts +4 -0
  16. package/dist/components/SkipLinksBar/index.d.ts +11 -0
  17. package/dist/components/index.d.ts +1 -0
  18. package/dist/index.js +124 -120
  19. package/dist/index.js.map +1 -1
  20. package/dist/index10.js +56 -46
  21. package/dist/index10.js.map +1 -1
  22. package/dist/index100.js +2 -2
  23. package/dist/index100.js.map +1 -1
  24. package/dist/index101.js +2 -2
  25. package/dist/index101.js.map +1 -1
  26. package/dist/index102.js +2 -2
  27. package/dist/index102.js.map +1 -1
  28. package/dist/index103.js +2 -2
  29. package/dist/index103.js.map +1 -1
  30. package/dist/index104.js +1 -1
  31. package/dist/index104.js.map +1 -1
  32. package/dist/index105.js +1 -1
  33. package/dist/index105.js.map +1 -1
  34. package/dist/index106.js +2 -2
  35. package/dist/index106.js.map +1 -1
  36. package/dist/index107.js +2 -2
  37. package/dist/index107.js.map +1 -1
  38. package/dist/index108.js +2 -2
  39. package/dist/index108.js.map +1 -1
  40. package/dist/index109.js +2 -2
  41. package/dist/index109.js.map +1 -1
  42. package/dist/index11.js +48 -18
  43. package/dist/index11.js.map +1 -1
  44. package/dist/index110.js +1 -1
  45. package/dist/index110.js.map +1 -1
  46. package/dist/index111.js +1 -1
  47. package/dist/index111.js.map +1 -1
  48. package/dist/index112.js +2 -2
  49. package/dist/index112.js.map +1 -1
  50. package/dist/index113.js +1 -1
  51. package/dist/index113.js.map +1 -1
  52. package/dist/index114.js +1 -1
  53. package/dist/index114.js.map +1 -1
  54. package/dist/index115.js +2 -2
  55. package/dist/index115.js.map +1 -1
  56. package/dist/index116.js +2 -2
  57. package/dist/index116.js.map +1 -1
  58. package/dist/index117.js +2 -2
  59. package/dist/index117.js.map +1 -1
  60. package/dist/index118.js +2 -2
  61. package/dist/index118.js.map +1 -1
  62. package/dist/index119.js +1 -1
  63. package/dist/index119.js.map +1 -1
  64. package/dist/index12.js +20 -11
  65. package/dist/index12.js.map +1 -1
  66. package/dist/index120.js +1 -1
  67. package/dist/index120.js.map +1 -1
  68. package/dist/index121.js +1 -1
  69. package/dist/index121.js.map +1 -1
  70. package/dist/index122.js +1 -1
  71. package/dist/index122.js.map +1 -1
  72. package/dist/index123.js +1 -1
  73. package/dist/index123.js.map +1 -1
  74. package/dist/index124.js +1 -1
  75. package/dist/index124.js.map +1 -1
  76. package/dist/index125.js +1 -1
  77. package/dist/index125.js.map +1 -1
  78. package/dist/index126.js +2 -2
  79. package/dist/index126.js.map +1 -1
  80. package/dist/index127.js +1 -1
  81. package/dist/index127.js.map +1 -1
  82. package/dist/index128.js +2 -2
  83. package/dist/index128.js.map +1 -1
  84. package/dist/index129.js +1 -1
  85. package/dist/index129.js.map +1 -1
  86. package/dist/index13.js +15 -9
  87. package/dist/index13.js.map +1 -1
  88. package/dist/index130.js +1 -1
  89. package/dist/index130.js.map +1 -1
  90. package/dist/index131.js +1 -1
  91. package/dist/index131.js.map +1 -1
  92. package/dist/index132.js +1 -1
  93. package/dist/index132.js.map +1 -1
  94. package/dist/index133.js +1 -1
  95. package/dist/index133.js.map +1 -1
  96. package/dist/index134.js +2 -2
  97. package/dist/index134.js.map +1 -1
  98. package/dist/index135.js +2 -2
  99. package/dist/index135.js.map +1 -1
  100. package/dist/index136.js +2 -2
  101. package/dist/index136.js.map +1 -1
  102. package/dist/index137.js +2 -2
  103. package/dist/index137.js.map +1 -1
  104. package/dist/index138.js +2 -2
  105. package/dist/index138.js.map +1 -1
  106. package/dist/index139.js +2 -2
  107. package/dist/index139.js.map +1 -1
  108. package/dist/index14.js +10 -202
  109. package/dist/index14.js.map +1 -1
  110. package/dist/index140.js +2 -2
  111. package/dist/index140.js.map +1 -1
  112. package/dist/index141.js +1 -1
  113. package/dist/index141.js.map +1 -1
  114. package/dist/index142.js +1 -1
  115. package/dist/index142.js.map +1 -1
  116. package/dist/index143.js +1 -1
  117. package/dist/index143.js.map +1 -1
  118. package/dist/index144.js +1 -1
  119. package/dist/index144.js.map +1 -1
  120. package/dist/index145.js +1 -1
  121. package/dist/index145.js.map +1 -1
  122. package/dist/index146.js +1 -1
  123. package/dist/index146.js.map +1 -1
  124. package/dist/index147.js +1 -1
  125. package/dist/index147.js.map +1 -1
  126. package/dist/index148.js +1 -1
  127. package/dist/index148.js.map +1 -1
  128. package/dist/index149.js +1 -1
  129. package/dist/index149.js.map +1 -1
  130. package/dist/index15.js +216 -59
  131. package/dist/index15.js.map +1 -1
  132. package/dist/index150.js +1 -1
  133. package/dist/index150.js.map +1 -1
  134. package/dist/index151.js +1 -1
  135. package/dist/index151.js.map +1 -1
  136. package/dist/index152.js +1 -1
  137. package/dist/index152.js.map +1 -1
  138. package/dist/index153.js +1 -1
  139. package/dist/index153.js.map +1 -1
  140. package/dist/index154.js +1 -1
  141. package/dist/index154.js.map +1 -1
  142. package/dist/index155.js +1 -1
  143. package/dist/index155.js.map +1 -1
  144. package/dist/index156.js +1 -1
  145. package/dist/index156.js.map +1 -1
  146. package/dist/index157.js +1 -1
  147. package/dist/index157.js.map +1 -1
  148. package/dist/index158.js +1 -1
  149. package/dist/index158.js.map +1 -1
  150. package/dist/index159.js +1 -1
  151. package/dist/index159.js.map +1 -1
  152. package/dist/index16.js +60 -84
  153. package/dist/index16.js.map +1 -1
  154. package/dist/index160.js +1 -1
  155. package/dist/index160.js.map +1 -1
  156. package/dist/index161.js +1 -1
  157. package/dist/index161.js.map +1 -1
  158. package/dist/index162.js +1 -1
  159. package/dist/index162.js.map +1 -1
  160. package/dist/index163.js +2 -2
  161. package/dist/index163.js.map +1 -1
  162. package/dist/index164.js +1 -1
  163. package/dist/index164.js.map +1 -1
  164. package/dist/index165.js +2 -2
  165. package/dist/index165.js.map +1 -1
  166. package/dist/index166.js +1 -1
  167. package/dist/index166.js.map +1 -1
  168. package/dist/index167.js +2 -2
  169. package/dist/index167.js.map +1 -1
  170. package/dist/index168.js +1 -1
  171. package/dist/index168.js.map +1 -1
  172. package/dist/index169.js +2 -2
  173. package/dist/index169.js.map +1 -1
  174. package/dist/index17.js +80 -274
  175. package/dist/index17.js.map +1 -1
  176. package/dist/index170.js +1 -1
  177. package/dist/index170.js.map +1 -1
  178. package/dist/index171.js +1 -1
  179. package/dist/index171.js.map +1 -1
  180. package/dist/index172.js +1 -1
  181. package/dist/index172.js.map +1 -1
  182. package/dist/index173.js +1 -1
  183. package/dist/index173.js.map +1 -1
  184. package/dist/index174.js +1 -1
  185. package/dist/index174.js.map +1 -1
  186. package/dist/index175.js +1 -1
  187. package/dist/index175.js.map +1 -1
  188. package/dist/index176.js +1 -1
  189. package/dist/index176.js.map +1 -1
  190. package/dist/index177.js +2 -2
  191. package/dist/index177.js.map +1 -1
  192. package/dist/index178.js +1 -1
  193. package/dist/index178.js.map +1 -1
  194. package/dist/index179.js +2 -2
  195. package/dist/index179.js.map +1 -1
  196. package/dist/index18.js +281 -11
  197. package/dist/index18.js.map +1 -1
  198. package/dist/index180.js +2 -149
  199. package/dist/index180.js.map +1 -1
  200. package/dist/index181.js +2 -6
  201. package/dist/index181.js.map +1 -1
  202. package/dist/index182.js +149 -5
  203. package/dist/index182.js.map +1 -1
  204. package/dist/index183.js +12 -0
  205. package/dist/index183.js.map +1 -0
  206. package/dist/index184.js +9 -0
  207. package/dist/index184.js.map +1 -0
  208. package/dist/index185.js +4 -23
  209. package/dist/index185.js.map +1 -1
  210. package/dist/index188.js +27 -0
  211. package/dist/index188.js.map +1 -0
  212. package/dist/index189.js +60 -21
  213. package/dist/index189.js.map +1 -1
  214. package/dist/index19.js +12 -31
  215. package/dist/index19.js.map +1 -1
  216. package/dist/index191.js +87 -0
  217. package/dist/index191.js.map +1 -0
  218. package/dist/index193.js +26 -0
  219. package/dist/index193.js.map +1 -0
  220. package/dist/index20.js +32 -56
  221. package/dist/index20.js.map +1 -1
  222. package/dist/{index197.js → index201.js} +1 -1
  223. package/dist/{index197.js.map → index201.js.map} +1 -1
  224. package/dist/{index205.js → index209.js} +1 -1
  225. package/dist/{index205.js.map → index209.js.map} +1 -1
  226. package/dist/index21.js +53 -75
  227. package/dist/index21.js.map +1 -1
  228. package/dist/{index207.js → index211.js} +1 -1
  229. package/dist/{index207.js.map → index211.js.map} +1 -1
  230. package/dist/{index208.js → index212.js} +2 -2
  231. package/dist/{index208.js.map → index212.js.map} +1 -1
  232. package/dist/index22.js +77 -21
  233. package/dist/index22.js.map +1 -1
  234. package/dist/index222.js +3 -9
  235. package/dist/index222.js.map +1 -1
  236. package/dist/index224.js +56 -167
  237. package/dist/index224.js.map +1 -1
  238. package/dist/index225.js +54 -11
  239. package/dist/index225.js.map +1 -1
  240. package/dist/index227.js +18 -5
  241. package/dist/index227.js.map +1 -1
  242. package/dist/index228.js +9 -5
  243. package/dist/index228.js.map +1 -1
  244. package/dist/index229.js +8 -36
  245. package/dist/index229.js.map +1 -1
  246. package/dist/index23.js +19 -190
  247. package/dist/index23.js.map +1 -1
  248. package/dist/index230.js +5 -2
  249. package/dist/index230.js.map +1 -1
  250. package/dist/index231.js +170 -8
  251. package/dist/index231.js.map +1 -1
  252. package/dist/index232.js +11 -327
  253. package/dist/index232.js.map +1 -1
  254. package/dist/index233.js +5 -49
  255. package/dist/index233.js.map +1 -1
  256. package/dist/index234.js +6 -2
  257. package/dist/index234.js.map +1 -1
  258. package/dist/index235.js +35 -73
  259. package/dist/index235.js.map +1 -1
  260. package/dist/index236.js +2 -93
  261. package/dist/index236.js.map +1 -1
  262. package/dist/index237.js +5 -49
  263. package/dist/index237.js.map +1 -1
  264. package/dist/index238.js +326 -7
  265. package/dist/index238.js.map +1 -1
  266. package/dist/index239.js +49 -4
  267. package/dist/index239.js.map +1 -1
  268. package/dist/index24.js +217 -44
  269. package/dist/index24.js.map +1 -1
  270. package/dist/index240.js +2 -52
  271. package/dist/index240.js.map +1 -1
  272. package/dist/index241.js +76 -2
  273. package/dist/index241.js.map +1 -1
  274. package/dist/index242.js +93 -2
  275. package/dist/index242.js.map +1 -1
  276. package/dist/index243.js +55 -0
  277. package/dist/index243.js.map +1 -0
  278. package/dist/index244.js +11 -0
  279. package/dist/index244.js.map +1 -0
  280. package/dist/index245.js +8 -0
  281. package/dist/index245.js.map +1 -0
  282. package/dist/index246.js +55 -0
  283. package/dist/index246.js.map +1 -0
  284. package/dist/index247.js +5 -0
  285. package/dist/index247.js.map +1 -0
  286. package/dist/index248.js +5 -0
  287. package/dist/index248.js.map +1 -0
  288. package/dist/index25.js +48 -18
  289. package/dist/index25.js.map +1 -1
  290. package/dist/index26.js +16 -80
  291. package/dist/index26.js.map +1 -1
  292. package/dist/index27.js +82 -79
  293. package/dist/index27.js.map +1 -1
  294. package/dist/index28.js +80 -130
  295. package/dist/index28.js.map +1 -1
  296. package/dist/index29.js +131 -55
  297. package/dist/index29.js.map +1 -1
  298. package/dist/index3.js +2 -2
  299. package/dist/index30.js +53 -97
  300. package/dist/index30.js.map +1 -1
  301. package/dist/index31.js +99 -61
  302. package/dist/index31.js.map +1 -1
  303. package/dist/index32.js +59 -32
  304. package/dist/index32.js.map +1 -1
  305. package/dist/index33.js +40 -71
  306. package/dist/index33.js.map +1 -1
  307. package/dist/index34.js +68 -41
  308. package/dist/index34.js.map +1 -1
  309. package/dist/index35.js +45 -57
  310. package/dist/index35.js.map +1 -1
  311. package/dist/index36.js +54 -230
  312. package/dist/index36.js.map +1 -1
  313. package/dist/index37.js +281 -70
  314. package/dist/index37.js.map +1 -1
  315. package/dist/index38.js +68 -80
  316. package/dist/index38.js.map +1 -1
  317. package/dist/index39.js +82 -32
  318. package/dist/index39.js.map +1 -1
  319. package/dist/index40.js +26 -44
  320. package/dist/index40.js.map +1 -1
  321. package/dist/index41.js +45 -67
  322. package/dist/index41.js.map +1 -1
  323. package/dist/index42.js +65 -49
  324. package/dist/index42.js.map +1 -1
  325. package/dist/index43.js +49 -89
  326. package/dist/index43.js.map +1 -1
  327. package/dist/index44.js +141 -93
  328. package/dist/index44.js.map +1 -1
  329. package/dist/index45.js +189 -35
  330. package/dist/index45.js.map +1 -1
  331. package/dist/index46.js +34 -29
  332. package/dist/index46.js.map +1 -1
  333. package/dist/index47.js +31 -147
  334. package/dist/index47.js.map +1 -1
  335. package/dist/index48.js +138 -45
  336. package/dist/index48.js.map +1 -1
  337. package/dist/index49.js +52 -373
  338. package/dist/index49.js.map +1 -1
  339. package/dist/index5.js +116 -115
  340. package/dist/index5.js.map +1 -1
  341. package/dist/index50.js +375 -63
  342. package/dist/index50.js.map +1 -1
  343. package/dist/index51.js +65 -38
  344. package/dist/index51.js.map +1 -1
  345. package/dist/index52.js +35 -35
  346. package/dist/index52.js.map +1 -1
  347. package/dist/index53.js +35 -82
  348. package/dist/index53.js.map +1 -1
  349. package/dist/index54.js +81 -159
  350. package/dist/index54.js.map +1 -1
  351. package/dist/index55.js +157 -135
  352. package/dist/index55.js.map +1 -1
  353. package/dist/index56.js +149 -29
  354. package/dist/index56.js.map +1 -1
  355. package/dist/index57.js +29 -86
  356. package/dist/index57.js.map +1 -1
  357. package/dist/index58.js +80 -113
  358. package/dist/index58.js.map +1 -1
  359. package/dist/index59.js +114 -56
  360. package/dist/index59.js.map +1 -1
  361. package/dist/index6.js +32 -51
  362. package/dist/index6.js.map +1 -1
  363. package/dist/index60.js +56 -147
  364. package/dist/index60.js.map +1 -1
  365. package/dist/index61.js +146 -312
  366. package/dist/index61.js.map +1 -1
  367. package/dist/index62.js +317 -44
  368. package/dist/index62.js.map +1 -1
  369. package/dist/index63.js +43 -139
  370. package/dist/index63.js.map +1 -1
  371. package/dist/index64.js +140 -12
  372. package/dist/index64.js.map +1 -1
  373. package/dist/index65.js +10 -42
  374. package/dist/index65.js.map +1 -1
  375. package/dist/index66.js +44 -5
  376. package/dist/index66.js.map +1 -1
  377. package/dist/index67.js +18 -8
  378. package/dist/index67.js.map +1 -1
  379. package/dist/index68.js +8 -0
  380. package/dist/index68.js.map +1 -0
  381. package/dist/index69.js +9 -2
  382. package/dist/index69.js.map +1 -1
  383. package/dist/index7.js +47 -81
  384. package/dist/index7.js.map +1 -1
  385. package/dist/index71.js +1 -1
  386. package/dist/index71.js.map +1 -1
  387. package/dist/index72.js +1 -1
  388. package/dist/index72.js.map +1 -1
  389. package/dist/index73.js +2 -2
  390. package/dist/index73.js.map +1 -1
  391. package/dist/index74.js +1 -1
  392. package/dist/index74.js.map +1 -1
  393. package/dist/index75.js +1 -1
  394. package/dist/index75.js.map +1 -1
  395. package/dist/index76.js +1 -1
  396. package/dist/index76.js.map +1 -1
  397. package/dist/index77.js +1 -1
  398. package/dist/index77.js.map +1 -1
  399. package/dist/index78.js +1 -1
  400. package/dist/index78.js.map +1 -1
  401. package/dist/index79.js +1 -1
  402. package/dist/index79.js.map +1 -1
  403. package/dist/index8.js +86 -26
  404. package/dist/index8.js.map +1 -1
  405. package/dist/index80.js +1 -1
  406. package/dist/index80.js.map +1 -1
  407. package/dist/index81.js +1 -1
  408. package/dist/index81.js.map +1 -1
  409. package/dist/index82.js +1 -1
  410. package/dist/index82.js.map +1 -1
  411. package/dist/index83.js +1 -1
  412. package/dist/index83.js.map +1 -1
  413. package/dist/index84.js +1 -1
  414. package/dist/index84.js.map +1 -1
  415. package/dist/index85.js +1 -1
  416. package/dist/index85.js.map +1 -1
  417. package/dist/index86.js +1 -1
  418. package/dist/index86.js.map +1 -1
  419. package/dist/index87.js +1 -1
  420. package/dist/index87.js.map +1 -1
  421. package/dist/index88.js +1 -1
  422. package/dist/index88.js.map +1 -1
  423. package/dist/index89.js +1 -1
  424. package/dist/index89.js.map +1 -1
  425. package/dist/index9.js +23 -59
  426. package/dist/index9.js.map +1 -1
  427. package/dist/index90.js +1 -1
  428. package/dist/index90.js.map +1 -1
  429. package/dist/index91.js +1 -1
  430. package/dist/index91.js.map +1 -1
  431. package/dist/index92.js +1 -1
  432. package/dist/index92.js.map +1 -1
  433. package/dist/index93.js +1 -1
  434. package/dist/index93.js.map +1 -1
  435. package/dist/index94.js +1 -1
  436. package/dist/index94.js.map +1 -1
  437. package/dist/index95.js +2 -2
  438. package/dist/index95.js.map +1 -1
  439. package/dist/index96.js +2 -2
  440. package/dist/index96.js.map +1 -1
  441. package/dist/index97.js +2 -2
  442. package/dist/index97.js.map +1 -1
  443. package/dist/index98.js +2 -2
  444. package/dist/index98.js.map +1 -1
  445. package/dist/index99.js +1 -1
  446. package/dist/index99.js.map +1 -1
  447. package/package.json +3 -2
  448. package/dist/index186.js +0 -65
  449. package/dist/index186.js.map +0 -1
  450. package/dist/index218.js +0 -7
  451. package/dist/index218.js.map +0 -1
  452. package/dist/index220.js +0 -62
  453. package/dist/index220.js.map +0 -1
  454. package/dist/index221.js +0 -13
  455. package/dist/index221.js.map +0 -1
  456. package/dist/index223.js +0 -8
  457. package/dist/index223.js.map +0 -1
  458. package/dist/index70.js +0 -5
  459. package/dist/index70.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index27.js","sources":["../src/components/Tabs/index.tsx"],"sourcesContent":["import React, { FC, ReactNode, useState, useEffect } from 'react';\nimport { Icon } from '../Icon';\nimport { Popover } from '../Popover';\nimport { MenuList } from '../MenuList';\n\nimport './style.scss';\n\ninterface TabProps {\n label: string;\n id: string;\n disabled?: boolean;\n renderTabContent?: (tab: TabProps) => ReactNode;\n automationId?: string;\n}\ninterface TabsProps {\n defaultActiveTab?: string;\n tabs: TabProps[];\n onTabChange?: (tabId: string) => void;\n primaryTabCount?: number; // prop for controlling primary tabs\n singleTabAsHeading?: boolean; // prop for rendering single tab as heading\n automationId?: string;\n}\n\nexport const Tabs: FC<TabsProps> = ({\n defaultActiveTab,\n tabs,\n onTabChange,\n primaryTabCount = 0,\n singleTabAsHeading = false\n}) => {\n const defaultTabId = defaultActiveTab || (tabs[0] ? tabs[0].id : '');\n const [activeTab, setActiveTab] = useState(defaultTabId);\n const [isIconTabHover, setIsIconTabHover] = useState(false);\n\n const visibleTabCount = primaryTabCount ? primaryTabCount : tabs?.length;\n const visibleTabs = tabs.slice(0, visibleTabCount);\n const overflowTabs = tabs.slice(visibleTabCount);\n const activeOverflowTab = overflowTabs.find((tab) => tab.id === activeTab);\n\n // Check if we should render as heading (single tab and singleTabAsHeading is true)\n const shouldRenderAsHeading = singleTabAsHeading && tabs.length === 1;\n\n useEffect(() => {\n setActiveTab(defaultActiveTab || '');\n }, [defaultActiveTab]);\n\n const handleTabClick = (tab: TabProps) => {\n setActiveTab(tab?.id);\n onTabChange?.(tab?.id);\n };\n\n const isTabActive = (tab: TabProps, activeTab: string) => {\n return tab.id === activeTab;\n };\n\n // If single tab and should render as heading, render just the heading\n if (shouldRenderAsHeading) {\n const singleTab = tabs[0];\n return (\n <>\n <div className=\"se-design-tabs-heading text-xl font-semibold text-[var(--color-gray-900)] mb-4\">\n {singleTab.label}\n </div>\n <div className=\"se-design-tabs-content\">\n <div className=\"tab-content block\">\n {singleTab?.renderTabContent && singleTab?.renderTabContent(singleTab)}\n </div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <div\n className=\"se-design-tabs flex items-center relative border rounded-md border-[var(--color-gray-400)] w-fit\"\n data-automation-id=\"tabs-container\"\n >\n {visibleTabs.map((tab) => {\n const isActive = activeTab === tab.id;\n const isDisabled = tab.disabled;\n return (\n <div\n key={tab.label}\n onClick={() => !isDisabled && handleTabClick(tab)}\n className={`se-design-tab-item text-base px-3 py-0.5 border-l first:border-l-0 first:rounded-l-[0.3rem] last:rounded-r-[0.3rem] border-[var(--color-gray-200)] ${\n isDisabled\n ? 'text-[var(--color-gray-400)] cursor-not-allowed'\n : isActive\n ? 'se-design-tab-item-active text-[var(--color-blue-500)] bg-[var(--color-blue-100)] font-medium hover:cursor-pointer'\n : 'text-[var(--color-gray-700)] font-normal hover:bg-[var(--color-gray-50)] hover:text-[var(--color-gray-900)] cursor-pointer transition-all duration-200 ease-in-out'\n }`}\n data-automation-id={`tab-item-${tab.automationId || tab.id || ''}`}\n >\n {tab.label}\n </div>\n );\n })}\n\n {overflowTabs.length > 0 && (\n <Popover\n className=\"se-design-overflow-tabs\"\n position=\"bottom-left\"\n automationId=\"tabs-kebab-menu\"\n noBorder\n renderPopoverSrcElement={({ displayPopover }) => {\n return (\n <div\n className={`overflow-tabs-src-element border-l px-3 py-0.5 rounded-r-md font-medium hover:cursor-pointer transition-all duration-200 ease-in-out ${\n displayPopover ? 'bg-[var(--color-blue-100)]' : ''\n } ${activeOverflowTab?.label ? 'bg-[var(--color-blue-100)]' : 'hover:bg-[var(--color-gray-50)]'}`}\n onMouseEnter={() => setIsIconTabHover(true)}\n onMouseLeave={() => setIsIconTabHover(false)}\n >\n {activeOverflowTab?.label ? (\n <>\n <span className=\"text-[var(--color-blue-500)]\">{activeOverflowTab?.label}</span>\n <Icon\n name=\"chevron\"\n rotation={displayPopover ? '180' : '0'}\n stroke={isIconTabHover ? 'var(--color-gray-900)' : 'var(--color-gray-700)'}\n />\n </>\n ) : (\n <Icon name=\"kebab-menu\" fill={isIconTabHover ? 'var(--color-gray-900)' : 'var(--color-gray-700)'} />\n )}\n </div>\n );\n }}\n renderPopoverContents={({ closePopoverCb }) => (\n <MenuList\n items={overflowTabs.map((tab) => ({\n id: tab?.id,\n label: tab?.label,\n automationId: tab?.automationId || tab?.id,\n onClick: () => {\n handleTabClick(tab);\n closePopoverCb();\n }\n }))}\n />\n )}\n />\n )}\n </div>\n\n <div className=\"se-design-tabs-content\">\n {tabs.map((tab) => (\n <div key={tab.id} className={`tab-content ${isTabActive(tab, activeTab) ? 'block' : 'hidden'}`}>\n {isTabActive(tab, activeTab) && tab?.renderTabContent && tab?.renderTabContent(tab)}\n </div>\n ))}\n </div>\n </>\n );\n};\n"],"names":["Tabs","defaultActiveTab","tabs","onTabChange","primaryTabCount","singleTabAsHeading","defaultTabId","id","activeTab","setActiveTab","useState","isIconTabHover","setIsIconTabHover","visibleTabCount","length","visibleTabs","slice","overflowTabs","activeOverflowTab","find","tab","shouldRenderAsHeading","useEffect","handleTabClick","isTabActive","singleTab","createElement","React","Fragment","className","label","renderTabContent","map","isActive","isDisabled","disabled","key","onClick","automationId","Popover","position","noBorder","renderPopoverSrcElement","displayPopover","onMouseEnter","onMouseLeave","Icon","name","rotation","stroke","fill","renderPopoverContents","closePopoverCb","MenuList","items"],"mappings":"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"}
1
+ {"version":3,"file":"index27.js","sources":["../src/components/SidebarOverlay/index.tsx"],"sourcesContent":["import React, { FC, useEffect, useRef, useMemo } from 'react';\nimport { Icon } from 'components/Icon';\nimport { getA11yNameAttributes, /* useFocusTrap, */ useDismissOnEscape } from '../../utils/a11y';\n\nimport './style.scss';\n\ntype SidebarOverlayA11yRole = 'dialog' | 'complementary';\n\nexport interface SidebarOverlayProps {\n content: React.ReactNode;\n className?: string;\n alignment?: 'left' | 'right';\n style?: React.CSSProperties;\n noShadow?: boolean;\n automationId?: string;\n id?: string;\n position?: 'absolute' | 'fixed' | 'relative' | 'static' | '';\n isOpen?: boolean;\n displayCloseSidebar?: boolean;\n closeSidebarIcon?: string;\n /**\n * Accessible label for the close button. Defaults to 'Close sidebar'.\n */\n closeAriaLabel?: string;\n onClose?: () => void;\n onSidebarUnmount?: () => void;\n onPathChange?: (route: string) => void;\n currentPath?: string;\n animateSidebar?: boolean;\n /**\n * Accessibility role that determines the full behavior bundle.\n * - 'dialog': modal drawer (focus trap, scroll lock, aria-modal, Escape closes)\n * - 'complementary': persistent side panel (no trap, no forced focus, no scroll lock)\n * If not provided, derives from position: fixed|absolute → 'dialog', static|relative|'' → 'complementary'\n */\n a11yRole?: SidebarOverlayA11yRole;\n /**\n * Accessible name when no visible label exists.\n * Prefer ariaLabelledBy when a visible title exists inside the sidebar.\n */\n ariaLabel?: string;\n /**\n * ID(s) of visible element(s) that label this sidebar.\n * Preferred over ariaLabel when a visible title exists (keeps SR and visual text in sync).\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) that describe this sidebar (additional context).\n */\n ariaDescribedBy?: string;\n}\n\nexport const SidebarOverlay: FC<SidebarOverlayProps> = (props) => {\n const {\n content,\n className = '',\n alignment,\n noShadow,\n position = 'fixed',\n isOpen,\n displayCloseSidebar,\n onClose,\n onSidebarUnmount,\n onPathChange,\n style,\n automationId,\n id,\n currentPath = '',\n closeSidebarIcon = 'close',\n closeAriaLabel = 'Close sidebar',\n animateSidebar = true,\n a11yRole,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy\n } = props;\n\n // Compute effective a11yRole: override or derive from position\n const effectiveA11yRole = useMemo<SidebarOverlayA11yRole>(() => {\n if (a11yRole) return a11yRole;\n // - fixed: modal drawer (dialog bundle)\n // - absolute/static/relative/'' : persistent side panel (complementary bundle)\n return position === 'fixed' ? 'dialog' : 'complementary';\n }, [a11yRole, position]);\n \n const isModal = effectiveA11yRole === 'dialog';\n\n // Get accessible name attributes\n const accessibleNameProps = useMemo(\n () => getA11yNameAttributes({ ariaLabel, ariaLabelledBy, ariaDescribedBy }),\n [ariaLabel, ariaLabelledBy, ariaDescribedBy]\n );\n\n const sidebarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n return () => {\n onSidebarUnmount && onSidebarUnmount();\n };\n }, []);\n\n // This is to prevent the body from scrolling when the sidebar is open\n useEffect(() => {\n document.body.style.overflow = isOpen ? 'hidden' : 'scroll';\n\n return () => {\n document.body.style.overflow = 'auto'; // Cleanup on unmount\n };\n }, [isOpen]);\n\n useEffect(() => {\n onPathChange && onPathChange(currentPath);\n }, [currentPath]);\n\n\n useDismissOnEscape({\n containerRef: sidebarRef,\n onDismiss: onClose,\n enabled: isOpen\n });\n\n // Focus trap: only in modal mode\n // useFocusTrap({\n // enabled: Boolean(isModal && isOpen),\n // containerRef: sidebarRef,\n // restoreFocus: true,\n // initialFocus: 'first'\n // });\n\n const getSidebarClassName = () => {\n let defaultClass = `se-design-sidebar-overlay-container z-[1000]`;\n\n defaultClass += className.length > 0 ? ` ${className}` : '';\n defaultClass += alignment === 'left' ? ' left-aligned' : ' right-aligned';\n defaultClass += noShadow ? ' no-shadow' : '';\n defaultClass += position.length > 0 ? ` ${position}` : '';\n defaultClass += isOpen ? ' open-sidebar' : ' closed-sidebar';\n if(!animateSidebar) {\n defaultClass += isOpen ? '' : ' hidden';\n }\n return defaultClass;\n };\n\n const getSidebarStyle = () => {\n return {\n ...style,\n ...(isOpen && style?.width ? { width: style?.width } : { width: '0px' })\n };\n };\n\n return (\n <div\n ref={sidebarRef}\n id={id}\n className={getSidebarClassName()}\n style={getSidebarStyle()}\n data-automation-id={automationId}\n tabIndex={-1}\n role={effectiveA11yRole}\n aria-modal={isModal ? 'true' : undefined}\n {...accessibleNameProps}\n >\n <div className=\"overlay-content\">\n {displayCloseSidebar && (\n <Icon\n name={closeSidebarIcon}\n onClick={onClose}\n className=\"overlay-close\"\n ariaLabel={closeAriaLabel}\n automationId=\"sidebar_overlay_close\"\n />\n )}\n {content}\n </div>\n </div>\n );\n};\n"],"names":["SidebarOverlay","props","content","className","alignment","noShadow","position","isOpen","displayCloseSidebar","onClose","onSidebarUnmount","onPathChange","style","automationId","id","currentPath","closeSidebarIcon","closeAriaLabel","animateSidebar","a11yRole","ariaLabel","ariaLabelledBy","ariaDescribedBy","effectiveA11yRole","useMemo","isModal","accessibleNameProps","getA11yNameAttributes","sidebarRef","useRef","useEffect","document","body","overflow","useDismissOnEscape","containerRef","onDismiss","enabled","getSidebarClassName","defaultClass","length","getSidebarStyle","width","React","createElement","_extends","ref","tabIndex","role","undefined","Icon","name","onClick"],"mappings":"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"}
package/dist/index28.js CHANGED
@@ -1,134 +1,84 @@
1
- import e, { forwardRef as G } from "react";
2
- import { Icon as H } from "./index5.js";
3
- import { Button as b } from "./index3.js";
4
- import { useStableId as I } from "./index181.js";
5
- import { getRegionAttributes as J } from "./index64.js";
6
- import { useAccessiblePress as K } from "./index65.js";
1
+ import r, { useState as f, useEffect as k } from "react";
2
+ import { Icon as E } from "./index5.js";
3
+ import { Popover as N } from "./index18.js";
4
+ import { MenuList as I } from "./index17.js";
7
5
  /* empty css */
8
- function d() {
9
- return d = Object.assign ? Object.assign.bind() : function(a) {
10
- for (var t = 1; t < arguments.length; t++) {
11
- var r = arguments[t];
12
- for (var o in r) ({}).hasOwnProperty.call(r, o) && (a[o] = r[o]);
13
- }
14
- return a;
15
- }, d.apply(null, arguments);
16
- }
17
- const n = {
18
- bannerCtn: "relative rounded-[12px] flex pr-3.5",
19
- bannerContentCtn: "pt-5 pl-6 pb-5 pr-2 flex flex-col gap-2",
20
- bannerLinkCta: "text-[#1088e7] cursor-pointer text-base leading-6 hover: text-[#0078d4]",
21
- bannerImageCtn: "flex",
22
- bannerCloseIconCtn: "absolute top-[12px] right-[12px] cursor-pointer hover:bg-[var(--color-gray-100)] rounded-full p-1 inline-flex items-center justify-center",
23
- bannerButton: "self-start"
24
- }, ee = /* @__PURE__ */ G((a, t) => {
25
- const {
26
- bannerClassName: r,
27
- bannerBgColor: o,
28
- title: h,
29
- titleTag: k = "span",
30
- description: m,
31
- hasImage: v,
32
- imagePosition: s = "right",
33
- imageWidth: N = "30%",
34
- imageAlt: B = "",
35
- hasCloseIcon: E,
36
- closeIconName: L,
37
- onClose: P,
38
- onBannerClick: i,
39
- hasLinkCta: T,
40
- onCtaClick: p,
41
- onSecondaryCtaClick: $,
42
- hasButtonCta: j,
43
- buttonType: A = "secondary",
44
- ctaText: C,
45
- ctaAriaLabel: u,
46
- hasSecondaryButtonCta: w = !1,
47
- secondaryButtonType: R = "secondary",
48
- secondaryCtaText: S,
49
- secondaryCtaAriaLabel: O,
50
- automationId: _ = "",
51
- titleId: c
52
- } = a, g = i ? "cursor-pointer" : "", f = I(c, "banner-title"), y = I(void 0, "banner-description"), l = J({
53
- titleId: f,
54
- descriptionId: m ? y : void 0,
55
- isFocusable: !!c
56
- }), {
57
- pressProps: z,
58
- role: F,
59
- tabIndex: W
60
- } = K({
61
- isNative: !1,
62
- onClick: i ? () => i() : void 0
63
- }), q = i ? {
64
- ...z,
65
- role: F,
66
- tabIndex: W
67
- } : {}, x = () => v && /* @__PURE__ */ e.createElement("div", {
68
- className: `${n.bannerImageCtn} ${g} banner-image-ctn ${s === "right" ? "mr-5 ml-0 justify-end" : "ml-5 mr-0 justify-start"} min-h-full`,
69
- style: {
70
- width: N
71
- },
72
- onClick: i
73
- }, /* @__PURE__ */ e.createElement("img", {
74
- src: a.bannerImage,
75
- alt: B,
76
- className: "max-w-[initial] h-[initial] max-h-[150px] object-contain"
77
- }));
78
- return /* @__PURE__ */ e.createElement("div", {
79
- ref: t,
80
- className: `${n.bannerCtn} ${g} ${r} banner-ctn`,
81
- style: {
82
- backgroundColor: o
83
- },
84
- "data-automation-id": _,
85
- role: l.role,
86
- "aria-labelledby": l["aria-labelledby"],
87
- "aria-describedby": l["aria-describedby"],
88
- tabIndex: l.tabIndex
89
- }, s === "left" && x(), /* @__PURE__ */ e.createElement("div", d({
90
- className: `${n.bannerContentCtn} w-[100%] banner-content-ctn`
91
- }, q), /* @__PURE__ */ e.createElement(k, {
92
- id: f,
93
- className: "banner-title",
94
- tabIndex: c ? -1 : void 0
95
- }, h), /* @__PURE__ */ e.createElement("span", {
96
- id: y,
97
- className: "banner-description"
98
- }, m), /* @__PURE__ */ e.createElement("div", {
99
- className: "flex gap-3",
100
- onClick: (D) => D.stopPropagation()
101
- }, T && /* @__PURE__ */ e.createElement(b, {
102
- type: "link",
103
- className: n.bannerLinkCta,
104
- onClick: p,
105
- label: C,
106
- ariaLabel: u
107
- }), j && /* @__PURE__ */ e.createElement(b, {
108
- type: A,
109
- size: "sm",
110
- label: C,
111
- onClick: p,
112
- className: n?.bannerButton,
113
- "data-automation-id": "banner-main-cta",
114
- ariaLabel: u
115
- }), w && /* @__PURE__ */ e.createElement(b, {
116
- type: R,
117
- size: "sm",
118
- label: S,
119
- onClick: $,
120
- className: n?.secondaryBannerButton,
121
- "data-automation-id": "banner-secondary-cta",
122
- ariaLabel: O
123
- }))), s === "right" && x(), E && /* @__PURE__ */ e.createElement(H, {
124
- name: L,
125
- className: n.bannerCloseIconCtn,
126
- onClick: P,
127
- ariaLabel: "Close banner",
128
- shouldStopPropagation: !0
129
- }));
130
- });
6
+ const M = ({
7
+ defaultActiveTab: a,
8
+ tabs: o,
9
+ onTabChange: p,
10
+ primaryTabCount: i = 0,
11
+ singleTabAsHeading: y = !1
12
+ }) => {
13
+ const T = a || (o[0] ? o[0].id : ""), [n, c] = f(T), [d, m] = f(!1), v = i || o?.length, h = o.slice(0, v), l = o.slice(v), s = l.find((e) => e.id === n), x = y && o.length === 1;
14
+ k(() => {
15
+ c(a || "");
16
+ }, [a]);
17
+ const u = (e) => {
18
+ c(e?.id), p?.(e?.id);
19
+ }, b = (e, t) => e.id === t;
20
+ if (x) {
21
+ const e = o[0];
22
+ return /* @__PURE__ */ r.createElement(r.Fragment, null, /* @__PURE__ */ r.createElement("div", {
23
+ className: "se-design-tabs-heading text-xl font-semibold text-[var(--color-gray-900)] mb-4"
24
+ }, e.label), /* @__PURE__ */ r.createElement("div", {
25
+ className: "se-design-tabs-content"
26
+ }, /* @__PURE__ */ r.createElement("div", {
27
+ className: "tab-content block"
28
+ }, e?.renderTabContent && e?.renderTabContent(e))));
29
+ }
30
+ return /* @__PURE__ */ r.createElement(r.Fragment, null, /* @__PURE__ */ r.createElement("div", {
31
+ className: "se-design-tabs flex items-center relative border rounded-md border-[var(--color-gray-400)] w-fit",
32
+ "data-automation-id": "tabs-container"
33
+ }, h.map((e) => {
34
+ const t = n === e.id, g = e.disabled;
35
+ return /* @__PURE__ */ r.createElement("div", {
36
+ key: e.label,
37
+ onClick: () => !g && u(e),
38
+ className: `se-design-tab-item text-base px-3 py-0.5 border-l first:border-l-0 first:rounded-l-[0.3rem] last:rounded-r-[0.3rem] border-[var(--color-gray-200)] ${g ? "text-[var(--color-gray-400)] cursor-not-allowed" : t ? "se-design-tab-item-active text-[var(--color-blue-500)] bg-[var(--color-blue-100)] font-medium hover:cursor-pointer" : "text-[var(--color-gray-700)] font-normal hover:bg-[var(--color-gray-50)] hover:text-[var(--color-gray-900)] cursor-pointer transition-all duration-200 ease-in-out"}`,
39
+ "data-automation-id": `tab-item-${e.automationId || e.id || ""}`
40
+ }, e.label);
41
+ }), l.length > 0 && /* @__PURE__ */ r.createElement(N, {
42
+ className: "se-design-overflow-tabs",
43
+ position: "bottom-left",
44
+ automationId: "tabs-kebab-menu",
45
+ noBorder: !0,
46
+ renderPopoverSrcElement: ({
47
+ displayPopover: e
48
+ }) => /* @__PURE__ */ r.createElement("div", {
49
+ className: `overflow-tabs-src-element border-l px-3 py-0.5 rounded-r-md font-medium hover:cursor-pointer transition-all duration-200 ease-in-out ${e ? "bg-[var(--color-blue-100)]" : ""} ${s?.label ? "bg-[var(--color-blue-100)]" : "hover:bg-[var(--color-gray-50)]"}`,
50
+ onMouseEnter: () => m(!0),
51
+ onMouseLeave: () => m(!1)
52
+ }, s?.label ? /* @__PURE__ */ r.createElement(r.Fragment, null, /* @__PURE__ */ r.createElement("span", {
53
+ className: "text-[var(--color-blue-500)]"
54
+ }, s?.label), /* @__PURE__ */ r.createElement(E, {
55
+ name: "chevron",
56
+ rotation: e ? "180" : "0",
57
+ stroke: d ? "var(--color-gray-900)" : "var(--color-gray-700)"
58
+ })) : /* @__PURE__ */ r.createElement(E, {
59
+ name: "kebab-menu",
60
+ fill: d ? "var(--color-gray-900)" : "var(--color-gray-700)"
61
+ })),
62
+ renderPopoverContents: ({
63
+ closePopoverCb: e
64
+ }) => /* @__PURE__ */ r.createElement(I, {
65
+ items: l.map((t) => ({
66
+ id: t?.id,
67
+ label: t?.label,
68
+ automationId: t?.automationId || t?.id,
69
+ onClick: () => {
70
+ u(t), e();
71
+ }
72
+ }))
73
+ })
74
+ })), /* @__PURE__ */ r.createElement("div", {
75
+ className: "se-design-tabs-content"
76
+ }, o.map((e) => /* @__PURE__ */ r.createElement("div", {
77
+ key: e.id,
78
+ className: `tab-content ${b(e, n) ? "block" : "hidden"}`
79
+ }, b(e, n) && e?.renderTabContent && e?.renderTabContent(e)))));
80
+ };
131
81
  export {
132
- ee as Banner
82
+ M as Tabs
133
83
  };
134
84
  //# sourceMappingURL=index28.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index28.js","sources":["../src/components/Banner/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { Map } from '../../utils/common.types';\nimport { Icon } from 'components/Icon';\nimport { Button } from 'components/Button';\nimport { useStableId } from '../../utils/useStableId';\nimport { useAccessiblePress } from '../../utils/a11y';\nimport { getRegionAttributes } from '../../utils/a11y/regionAttributes';\nimport './style.scss';\n\nexport interface BannerProps {\n bannerClassName?: string | '';\n bannerBgColor?: string | '';\n title: string | '';\n titleTag?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n description: string | '';\n hasImage?: boolean | false;\n imagePosition?: 'left' | 'right' | '';\n imageWidth?: string | '30%';\n imageAlt?: string | '';\n bannerImage: string | '';\n hasCloseIcon?: boolean | false;\n closeIconName: string | '';\n onClose: () => void | (() => {});\n onBannerClick?: () => void | (() => {});\n hasButtonCta?: boolean | false;\n hasSecondaryButtonCta?: boolean | false;\n buttonType?: 'primary' | 'secondary' | 'link';\n secondaryButtonType?: 'primary' | 'secondary' | 'ghost' | 'link';\n hasLinkCta?: boolean | false;\n ctaText: string | '';\n secondaryCtaText: string | '';\n onCtaClick: () => void | (() => {});\n onSecondaryCtaClick: () => void | (() => {});\n /**\n * Accessible name for primary CTA button (screen reader only, if different from visible label).\n */\n ctaAriaLabel?: string;\n /**\n * Accessible name for secondary CTA button (screen reader only, if different from visible label).\n */\n secondaryCtaAriaLabel?: string;\n automationId?: string;\n // Optional title ID for external control (e.g., focus management)\n titleId?: string;\n}\n\nconst classNames: Map = {\n bannerCtn: `relative rounded-[12px] flex pr-3.5`,\n bannerContentCtn: 'pt-5 pl-6 pb-5 pr-2 flex flex-col gap-2',\n bannerLinkCta: 'text-[#1088e7] cursor-pointer text-base leading-6 hover: text-[#0078d4]',\n bannerImageCtn: 'flex',\n bannerCloseIconCtn:\n 'absolute top-[12px] right-[12px] cursor-pointer hover:bg-[var(--color-gray-100)] rounded-full p-1 inline-flex items-center justify-center',\n bannerButton: 'self-start'\n};\n\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>((props, ref) => {\n const {\n bannerClassName,\n bannerBgColor,\n title,\n titleTag: TitleTag = 'span',\n description,\n hasImage,\n imagePosition = 'right',\n imageWidth = '30%',\n imageAlt = '',\n hasCloseIcon,\n closeIconName,\n onClose,\n onBannerClick,\n hasLinkCta,\n onCtaClick,\n onSecondaryCtaClick,\n hasButtonCta,\n buttonType = 'secondary',\n ctaText,\n ctaAriaLabel,\n hasSecondaryButtonCta = false,\n secondaryButtonType = 'secondary',\n secondaryCtaText,\n secondaryCtaAriaLabel,\n automationId = '',\n titleId: providedTitleId\n } = props;\n\n const isClickableClass = onBannerClick ? 'cursor-pointer' : '';\n const titleId = useStableId(providedTitleId, 'banner-title');\n const descriptionId = useStableId(undefined, 'banner-description');\n\n const regionAttributes = getRegionAttributes({\n titleId,\n descriptionId: description ? descriptionId : undefined,\n isFocusable: !!providedTitleId\n });\n\n // When banner is clickable, make the content area keyboard-activatable (Enter/Space).\n // We intentionally keep this as an extra tab stop (per dashboard banner behavior).\n const { pressProps: bannerContentPressProps, role: bannerContentRole, tabIndex: bannerContentTabIndex } =\n useAccessiblePress({\n isNative: false,\n onClick: onBannerClick ? () => onBannerClick() : undefined\n });\n\n const bannerContentClickableProps = onBannerClick\n ? {\n ...bannerContentPressProps,\n role: bannerContentRole,\n tabIndex: bannerContentTabIndex\n }\n : {};\n\n const renderImage = () =>\n hasImage && (\n <div\n className={`${classNames.bannerImageCtn} ${isClickableClass} banner-image-ctn ${imagePosition === 'right' ? 'mr-5 ml-0 justify-end' : 'ml-5 mr-0 justify-start'} min-h-full`}\n style={{ width: imageWidth }}\n onClick={onBannerClick}\n >\n <img src={props.bannerImage} alt={imageAlt} className=\"max-w-[initial] h-[initial] max-h-[150px] object-contain\" />\n </div>\n );\n\n return (\n <div \n ref={ref}\n className={`${classNames.bannerCtn} ${isClickableClass} ${bannerClassName} banner-ctn`} \n style={{ backgroundColor: bannerBgColor }} \n data-automation-id={automationId}\n role={regionAttributes.role}\n aria-labelledby={regionAttributes['aria-labelledby']}\n aria-describedby={regionAttributes['aria-describedby']}\n tabIndex={regionAttributes.tabIndex}\n >\n {imagePosition === 'left' && renderImage()}\n <div \n className={`${classNames.bannerContentCtn} w-[100%] banner-content-ctn`} \n {...bannerContentClickableProps}\n >\n <TitleTag id={titleId} className=\"banner-title\" tabIndex={providedTitleId ? -1 : undefined}>{title}</TitleTag>\n <span id={descriptionId} className=\"banner-description\">{description}</span>\n <div className=\"flex gap-3\" onClick={(e) => e.stopPropagation()}>\n {hasLinkCta && (\n <Button \n type=\"link\" \n className={classNames.bannerLinkCta} \n onClick={onCtaClick} \n label={ctaText}\n ariaLabel={ctaAriaLabel}\n />\n )}\n {hasButtonCta && (\n <Button\n type={buttonType}\n size=\"sm\"\n label={ctaText}\n onClick={onCtaClick}\n className={classNames?.bannerButton}\n data-automation-id=\"banner-main-cta\"\n ariaLabel={ctaAriaLabel}\n />\n )}\n {hasSecondaryButtonCta && (\n <Button\n type={secondaryButtonType}\n size=\"sm\"\n label={secondaryCtaText}\n onClick={onSecondaryCtaClick}\n className={classNames?.secondaryBannerButton}\n data-automation-id=\"banner-secondary-cta\"\n ariaLabel={secondaryCtaAriaLabel}\n />\n )}\n </div>\n </div>\n {imagePosition === 'right' && renderImage()}\n {hasCloseIcon && (\n <Icon\n name={closeIconName}\n className={classNames.bannerCloseIconCtn}\n onClick={onClose}\n ariaLabel=\"Close banner\"\n shouldStopPropagation\n />\n )}\n </div>\n );\n});\n"],"names":["classNames","bannerCtn","bannerContentCtn","bannerLinkCta","bannerImageCtn","bannerCloseIconCtn","bannerButton","Banner","forwardRef","props","ref","bannerClassName","bannerBgColor","title","titleTag","TitleTag","description","hasImage","imagePosition","imageWidth","imageAlt","hasCloseIcon","closeIconName","onClose","onBannerClick","hasLinkCta","onCtaClick","onSecondaryCtaClick","hasButtonCta","buttonType","ctaText","ctaAriaLabel","hasSecondaryButtonCta","secondaryButtonType","secondaryCtaText","secondaryCtaAriaLabel","automationId","titleId","providedTitleId","isClickableClass","useStableId","descriptionId","undefined","regionAttributes","getRegionAttributes","isFocusable","pressProps","bannerContentPressProps","role","bannerContentRole","tabIndex","bannerContentTabIndex","useAccessiblePress","isNative","onClick","bannerContentClickableProps","renderImage","React","createElement","className","style","width","src","bannerImage","alt","backgroundColor","_extends","id","e","stopPropagation","Button","type","label","ariaLabel","size","secondaryBannerButton","Icon","name","shouldStopPropagation"],"mappings":"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"}
1
+ {"version":3,"file":"index28.js","sources":["../src/components/Tabs/index.tsx"],"sourcesContent":["import React, { FC, ReactNode, useState, useEffect } from 'react';\nimport { Icon } from '../Icon';\nimport { Popover } from '../Popover';\nimport { MenuList } from '../MenuList';\n\nimport './style.scss';\n\ninterface TabProps {\n label: string;\n id: string;\n disabled?: boolean;\n renderTabContent?: (tab: TabProps) => ReactNode;\n automationId?: string;\n}\ninterface TabsProps {\n defaultActiveTab?: string;\n tabs: TabProps[];\n onTabChange?: (tabId: string) => void;\n primaryTabCount?: number; // prop for controlling primary tabs\n singleTabAsHeading?: boolean; // prop for rendering single tab as heading\n automationId?: string;\n}\n\nexport const Tabs: FC<TabsProps> = ({\n defaultActiveTab,\n tabs,\n onTabChange,\n primaryTabCount = 0,\n singleTabAsHeading = false\n}) => {\n const defaultTabId = defaultActiveTab || (tabs[0] ? tabs[0].id : '');\n const [activeTab, setActiveTab] = useState(defaultTabId);\n const [isIconTabHover, setIsIconTabHover] = useState(false);\n\n const visibleTabCount = primaryTabCount ? primaryTabCount : tabs?.length;\n const visibleTabs = tabs.slice(0, visibleTabCount);\n const overflowTabs = tabs.slice(visibleTabCount);\n const activeOverflowTab = overflowTabs.find((tab) => tab.id === activeTab);\n\n // Check if we should render as heading (single tab and singleTabAsHeading is true)\n const shouldRenderAsHeading = singleTabAsHeading && tabs.length === 1;\n\n useEffect(() => {\n setActiveTab(defaultActiveTab || '');\n }, [defaultActiveTab]);\n\n const handleTabClick = (tab: TabProps) => {\n setActiveTab(tab?.id);\n onTabChange?.(tab?.id);\n };\n\n const isTabActive = (tab: TabProps, activeTab: string) => {\n return tab.id === activeTab;\n };\n\n // If single tab and should render as heading, render just the heading\n if (shouldRenderAsHeading) {\n const singleTab = tabs[0];\n return (\n <>\n <div className=\"se-design-tabs-heading text-xl font-semibold text-[var(--color-gray-900)] mb-4\">\n {singleTab.label}\n </div>\n <div className=\"se-design-tabs-content\">\n <div className=\"tab-content block\">\n {singleTab?.renderTabContent && singleTab?.renderTabContent(singleTab)}\n </div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <div\n className=\"se-design-tabs flex items-center relative border rounded-md border-[var(--color-gray-400)] w-fit\"\n data-automation-id=\"tabs-container\"\n >\n {visibleTabs.map((tab) => {\n const isActive = activeTab === tab.id;\n const isDisabled = tab.disabled;\n return (\n <div\n key={tab.label}\n onClick={() => !isDisabled && handleTabClick(tab)}\n className={`se-design-tab-item text-base px-3 py-0.5 border-l first:border-l-0 first:rounded-l-[0.3rem] last:rounded-r-[0.3rem] border-[var(--color-gray-200)] ${\n isDisabled\n ? 'text-[var(--color-gray-400)] cursor-not-allowed'\n : isActive\n ? 'se-design-tab-item-active text-[var(--color-blue-500)] bg-[var(--color-blue-100)] font-medium hover:cursor-pointer'\n : 'text-[var(--color-gray-700)] font-normal hover:bg-[var(--color-gray-50)] hover:text-[var(--color-gray-900)] cursor-pointer transition-all duration-200 ease-in-out'\n }`}\n data-automation-id={`tab-item-${tab.automationId || tab.id || ''}`}\n >\n {tab.label}\n </div>\n );\n })}\n\n {overflowTabs.length > 0 && (\n <Popover\n className=\"se-design-overflow-tabs\"\n position=\"bottom-left\"\n automationId=\"tabs-kebab-menu\"\n noBorder\n renderPopoverSrcElement={({ displayPopover }) => {\n return (\n <div\n className={`overflow-tabs-src-element border-l px-3 py-0.5 rounded-r-md font-medium hover:cursor-pointer transition-all duration-200 ease-in-out ${\n displayPopover ? 'bg-[var(--color-blue-100)]' : ''\n } ${activeOverflowTab?.label ? 'bg-[var(--color-blue-100)]' : 'hover:bg-[var(--color-gray-50)]'}`}\n onMouseEnter={() => setIsIconTabHover(true)}\n onMouseLeave={() => setIsIconTabHover(false)}\n >\n {activeOverflowTab?.label ? (\n <>\n <span className=\"text-[var(--color-blue-500)]\">{activeOverflowTab?.label}</span>\n <Icon\n name=\"chevron\"\n rotation={displayPopover ? '180' : '0'}\n stroke={isIconTabHover ? 'var(--color-gray-900)' : 'var(--color-gray-700)'}\n />\n </>\n ) : (\n <Icon name=\"kebab-menu\" fill={isIconTabHover ? 'var(--color-gray-900)' : 'var(--color-gray-700)'} />\n )}\n </div>\n );\n }}\n renderPopoverContents={({ closePopoverCb }) => (\n <MenuList\n items={overflowTabs.map((tab) => ({\n id: tab?.id,\n label: tab?.label,\n automationId: tab?.automationId || tab?.id,\n onClick: () => {\n handleTabClick(tab);\n closePopoverCb();\n }\n }))}\n />\n )}\n />\n )}\n </div>\n\n <div className=\"se-design-tabs-content\">\n {tabs.map((tab) => (\n <div key={tab.id} className={`tab-content ${isTabActive(tab, activeTab) ? 'block' : 'hidden'}`}>\n {isTabActive(tab, activeTab) && tab?.renderTabContent && tab?.renderTabContent(tab)}\n </div>\n ))}\n </div>\n </>\n );\n};\n"],"names":["Tabs","defaultActiveTab","tabs","onTabChange","primaryTabCount","singleTabAsHeading","defaultTabId","id","activeTab","setActiveTab","useState","isIconTabHover","setIsIconTabHover","visibleTabCount","length","visibleTabs","slice","overflowTabs","activeOverflowTab","find","tab","shouldRenderAsHeading","useEffect","handleTabClick","isTabActive","singleTab","createElement","React","Fragment","className","label","renderTabContent","map","isActive","isDisabled","disabled","key","onClick","automationId","Popover","position","noBorder","renderPopoverSrcElement","displayPopover","onMouseEnter","onMouseLeave","Icon","name","rotation","stroke","fill","renderPopoverContents","closePopoverCb","MenuList","items"],"mappings":"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"}
package/dist/index29.js CHANGED
@@ -1,58 +1,134 @@
1
- import o from "react";
2
- import { Icon as h } from "./index5.js";
3
- const c = {
4
- pageNavigation: "px-[6px] flex items-center justify-center disabled:opacity-50 hover:cursor-pointer",
5
- pageItem: "px-[6px] text-sm flex items-center justify-center rounded border hover:cursor-pointer"
6
- }, E = ({
7
- currentPage: t,
8
- itemsPerPage: l,
9
- totalItems: r,
10
- onPageChange: p,
11
- mobileView: m = !1
12
- }) => {
13
- const n = Math.ceil(r / l), d = 1, f = n, x = (t - 1) * l + 1, u = Math.min(t * l, r), v = u < r, g = t > 1, b = () => {
14
- const e = [], a = (s) => /* @__PURE__ */ o.createElement("span", {
15
- key: s,
16
- onClick: () => p(s),
17
- className: `${c.pageItem} ${t === s ? "bg-[var(--color-gray-100)] border-[var(--color-gray-300)]" : "border-[var(--color-gray-200)] hover:bg-[var(--color-gray-50)]"}`,
18
- "data-automation-id": `page-number-${s}`
19
- }, s), i = (s) => /* @__PURE__ */ o.createElement("span", {
20
- key: s,
21
- className: "w-5 h-5 text-sm rounded border border-[var(--color-gray-200)] flex items-end justify-center"
22
- }, "...");
23
- if (m)
24
- return e.push(a(t)), e;
25
- if (t <= 3) {
26
- for (let s = 1; s <= Math.min(3, n); s++)
27
- e.push(a(s));
28
- n > 3 && (e.push(i("ellipsis-end")), e.push(a(n)));
29
- } else t >= n - 2 ? (e.push(a(d)), e.push(i("ellipsis-start")), e.push(a(n - 2)), e.push(a(n - 1)), e.push(a(n))) : (e.push(a(d)), e.push(i("ellipsis-start")), e.push(a(t - 1)), e.push(a(t)), e.push(a(t + 1)), e.push(i("ellipsis-end")), e.push(a(f)));
30
- return e;
31
- };
32
- return /* @__PURE__ */ o.createElement("div", {
33
- className: "flex items-center gap-1 font-normal",
34
- "data-automation-id": "pagination-container"
35
- }, /* @__PURE__ */ o.createElement("span", {
36
- className: "text-sm text-[var(--color-gray-700)] mr-1",
37
- "data-automation-id": "pagination-items-info"
38
- }, `${m ? "" : "Showing "}${x}-${u} of ${r}`), /* @__PURE__ */ o.createElement("span", {
39
- onClick: () => g && p(t - 1),
40
- className: `${c.pageNavigation}`,
41
- "data-automation-id": "pagination-previous-button"
42
- }, /* @__PURE__ */ o.createElement(h, {
43
- name: "next",
44
- className: "rotate-180 transition-transform stroke-[var(--color-gray-600)]"
45
- })), /* @__PURE__ */ o.createElement("div", {
46
- className: "flex items-center gap-1"
47
- }, b()), /* @__PURE__ */ o.createElement("span", {
48
- onClick: () => v && p(t + 1),
49
- className: `${c.pageNavigation}`,
50
- "data-automation-id": "pagination-next-button"
51
- }, /* @__PURE__ */ o.createElement(h, {
52
- name: "next"
53
- })));
54
- };
1
+ import e, { forwardRef as G } from "react";
2
+ import { Icon as H } from "./index5.js";
3
+ import { Button as b } from "./index3.js";
4
+ import { useStableId as I } from "./index184.js";
5
+ import { getRegionAttributes as J } from "./index65.js";
6
+ import { useAccessiblePress as K } from "./index66.js";
7
+ /* empty css */
8
+ function d() {
9
+ return d = Object.assign ? Object.assign.bind() : function(a) {
10
+ for (var t = 1; t < arguments.length; t++) {
11
+ var r = arguments[t];
12
+ for (var o in r) ({}).hasOwnProperty.call(r, o) && (a[o] = r[o]);
13
+ }
14
+ return a;
15
+ }, d.apply(null, arguments);
16
+ }
17
+ const n = {
18
+ bannerCtn: "relative rounded-[12px] flex pr-3.5",
19
+ bannerContentCtn: "pt-5 pl-6 pb-5 pr-2 flex flex-col gap-2",
20
+ bannerLinkCta: "text-[#1088e7] cursor-pointer text-base leading-6 hover: text-[#0078d4]",
21
+ bannerImageCtn: "flex",
22
+ bannerCloseIconCtn: "absolute top-[12px] right-[12px] cursor-pointer hover:bg-[var(--color-gray-100)] rounded-full p-1 inline-flex items-center justify-center",
23
+ bannerButton: "self-start"
24
+ }, ee = /* @__PURE__ */ G((a, t) => {
25
+ const {
26
+ bannerClassName: r,
27
+ bannerBgColor: o,
28
+ title: h,
29
+ titleTag: k = "span",
30
+ description: m,
31
+ hasImage: v,
32
+ imagePosition: s = "right",
33
+ imageWidth: N = "30%",
34
+ imageAlt: B = "",
35
+ hasCloseIcon: E,
36
+ closeIconName: L,
37
+ onClose: P,
38
+ onBannerClick: i,
39
+ hasLinkCta: T,
40
+ onCtaClick: p,
41
+ onSecondaryCtaClick: $,
42
+ hasButtonCta: j,
43
+ buttonType: A = "secondary",
44
+ ctaText: C,
45
+ ctaAriaLabel: u,
46
+ hasSecondaryButtonCta: w = !1,
47
+ secondaryButtonType: R = "secondary",
48
+ secondaryCtaText: S,
49
+ secondaryCtaAriaLabel: O,
50
+ automationId: _ = "",
51
+ titleId: c
52
+ } = a, g = i ? "cursor-pointer" : "", f = I(c, "banner-title"), y = I(void 0, "banner-description"), l = J({
53
+ titleId: f,
54
+ descriptionId: m ? y : void 0,
55
+ isFocusable: !!c
56
+ }), {
57
+ pressProps: z,
58
+ role: F,
59
+ tabIndex: W
60
+ } = K({
61
+ isNative: !1,
62
+ onClick: i ? () => i() : void 0
63
+ }), q = i ? {
64
+ ...z,
65
+ role: F,
66
+ tabIndex: W
67
+ } : {}, x = () => v && /* @__PURE__ */ e.createElement("div", {
68
+ className: `${n.bannerImageCtn} ${g} banner-image-ctn ${s === "right" ? "mr-5 ml-0 justify-end" : "ml-5 mr-0 justify-start"} min-h-full`,
69
+ style: {
70
+ width: N
71
+ },
72
+ onClick: i
73
+ }, /* @__PURE__ */ e.createElement("img", {
74
+ src: a.bannerImage,
75
+ alt: B,
76
+ className: "max-w-[initial] h-[initial] max-h-[150px] object-contain"
77
+ }));
78
+ return /* @__PURE__ */ e.createElement("div", {
79
+ ref: t,
80
+ className: `${n.bannerCtn} ${g} ${r} banner-ctn`,
81
+ style: {
82
+ backgroundColor: o
83
+ },
84
+ "data-automation-id": _,
85
+ role: l.role,
86
+ "aria-labelledby": l["aria-labelledby"],
87
+ "aria-describedby": l["aria-describedby"],
88
+ tabIndex: l.tabIndex
89
+ }, s === "left" && x(), /* @__PURE__ */ e.createElement("div", d({
90
+ className: `${n.bannerContentCtn} w-[100%] banner-content-ctn`
91
+ }, q), /* @__PURE__ */ e.createElement(k, {
92
+ id: f,
93
+ className: "banner-title",
94
+ tabIndex: c ? -1 : void 0
95
+ }, h), /* @__PURE__ */ e.createElement("span", {
96
+ id: y,
97
+ className: "banner-description"
98
+ }, m), /* @__PURE__ */ e.createElement("div", {
99
+ className: "flex gap-3",
100
+ onClick: (D) => D.stopPropagation()
101
+ }, T && /* @__PURE__ */ e.createElement(b, {
102
+ type: "link",
103
+ className: n.bannerLinkCta,
104
+ onClick: p,
105
+ label: C,
106
+ ariaLabel: u
107
+ }), j && /* @__PURE__ */ e.createElement(b, {
108
+ type: A,
109
+ size: "sm",
110
+ label: C,
111
+ onClick: p,
112
+ className: n?.bannerButton,
113
+ "data-automation-id": "banner-main-cta",
114
+ ariaLabel: u
115
+ }), w && /* @__PURE__ */ e.createElement(b, {
116
+ type: R,
117
+ size: "sm",
118
+ label: S,
119
+ onClick: $,
120
+ className: n?.secondaryBannerButton,
121
+ "data-automation-id": "banner-secondary-cta",
122
+ ariaLabel: O
123
+ }))), s === "right" && x(), E && /* @__PURE__ */ e.createElement(H, {
124
+ name: L,
125
+ className: n.bannerCloseIconCtn,
126
+ onClick: P,
127
+ ariaLabel: "Close banner",
128
+ shouldStopPropagation: !0
129
+ }));
130
+ });
55
131
  export {
56
- E as Pagination
132
+ ee as Banner
57
133
  };
58
134
  //# sourceMappingURL=index29.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index29.js","sources":["../src/components/Pagination/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Icon } from 'components/Icon';\n\ninterface PaginationProps {\n currentPage: number;\n itemsPerPage: number;\n totalItems: number;\n onPageChange: (page: number) => void;\n mobileView?: boolean;\n}\n\nconst paginationClassNames = {\n pageNavigation: \"px-[6px] flex items-center justify-center disabled:opacity-50 hover:cursor-pointer\",\n pageItem: \"px-[6px] text-sm flex items-center justify-center rounded border hover:cursor-pointer\"\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({ currentPage, itemsPerPage, totalItems, onPageChange, mobileView = false }) => {\n const totalPages = Math.ceil(totalItems / itemsPerPage);\n const firstPage = 1;\n const lastPage = totalPages;\n const startItem = (currentPage - 1) * itemsPerPage + 1;\n const endItem = Math.min(currentPage * itemsPerPage, totalItems);\n const hasNextPage = endItem < totalItems;\n const hasPrevPage = currentPage > 1;\n\n const renderPageNumbers = () => {\n const pages = [];\n\n const renderPageNumber = (pageNum: number) => {\n return (\n <span\n key={pageNum}\n onClick={() => onPageChange(pageNum)}\n className={`${paginationClassNames.pageItem} ${currentPage === pageNum ? 'bg-[var(--color-gray-100)] border-[var(--color-gray-300)]' : 'border-[var(--color-gray-200)] hover:bg-[var(--color-gray-50)]'}`}\n data-automation-id={`page-number-${pageNum}`}\n >\n {pageNum}\n </span>\n );\n };\n\n const renderEllipsis = (key: string) => {\n return (\n <span key={key} className=\"w-5 h-5 text-sm rounded border border-[var(--color-gray-200)] flex items-end justify-center\">\n ...\n </span>\n );\n };\n if(mobileView) {\n pages.push(renderPageNumber(currentPage));\n\n return pages;\n }\n if (currentPage <= 3) {\n for (let i = 1; i <= Math.min(3, totalPages); i++) {\n pages.push(renderPageNumber(i));\n }\n\n if (totalPages > 3) {\n pages.push(renderEllipsis(\"ellipsis-end\"));\n pages.push(renderPageNumber(totalPages));\n }\n } else if (currentPage >= totalPages - 2) {\n pages.push(renderPageNumber(firstPage));\n pages.push(renderEllipsis(\"ellipsis-start\"));\n pages.push(renderPageNumber(totalPages - 2));\n pages.push(renderPageNumber(totalPages - 1));\n pages.push(renderPageNumber(totalPages));\n } else {\n pages.push(renderPageNumber(firstPage));\n pages.push(renderEllipsis(\"ellipsis-start\"));\n pages.push(renderPageNumber(currentPage - 1));\n pages.push(renderPageNumber(currentPage));\n pages.push(renderPageNumber(currentPage + 1));\n pages.push(renderEllipsis(\"ellipsis-end\"));\n pages.push(renderPageNumber(lastPage));\n }\n\n return pages;\n };\n\n return (\n <div className=\"flex items-center gap-1 font-normal\" data-automation-id=\"pagination-container\">\n <span className=\"text-sm text-[var(--color-gray-700)] mr-1\" data-automation-id=\"pagination-items-info\">\n {`${mobileView ? \"\" : \"Showing \"}${startItem}-${endItem} of ${totalItems}`}\n </span>\n <span\n onClick={() => hasPrevPage && onPageChange(currentPage - 1)}\n className={`${paginationClassNames.pageNavigation}`}\n data-automation-id=\"pagination-previous-button\"\n >\n <Icon name=\"next\" className=\"rotate-180 transition-transform stroke-[var(--color-gray-600)]\" />\n </span>\n {/* Render page numbers */}\n <div className=\"flex items-center gap-1\">{renderPageNumbers()}</div>\n <span\n onClick={() => hasNextPage && onPageChange(currentPage + 1)}\n className={`${paginationClassNames.pageNavigation}`}\n data-automation-id=\"pagination-next-button\"\n >\n <Icon name=\"next\" />\n </span>\n </div>\n );\n};\n"],"names":["React__default","Icon","paginationClassNames","pageNavigation","pageItem","Pagination","currentPage","itemsPerPage","totalItems","onPageChange","mobileView","totalPages","Math","ceil","firstPage","lastPage","startItem","endItem","min","hasNextPage","hasPrevPage","renderPageNumbers","pages","renderPageNumber","pageNum","React","createElement","key","onClick","className","renderEllipsis","push","i","name"],"mappings":"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"}
1
+ {"version":3,"file":"index29.js","sources":["../src/components/Banner/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { Map } from '../../utils/common.types';\nimport { Icon } from 'components/Icon';\nimport { Button } from 'components/Button';\nimport { useStableId } from '../../utils/useStableId';\nimport { useAccessiblePress } from '../../utils/a11y';\nimport { getRegionAttributes } from '../../utils/a11y/regionAttributes';\nimport './style.scss';\n\nexport interface BannerProps {\n bannerClassName?: string | '';\n bannerBgColor?: string | '';\n title: string | '';\n titleTag?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n description: string | '';\n hasImage?: boolean | false;\n imagePosition?: 'left' | 'right' | '';\n imageWidth?: string | '30%';\n imageAlt?: string | '';\n bannerImage: string | '';\n hasCloseIcon?: boolean | false;\n closeIconName: string | '';\n onClose: () => void | (() => {});\n onBannerClick?: () => void | (() => {});\n hasButtonCta?: boolean | false;\n hasSecondaryButtonCta?: boolean | false;\n buttonType?: 'primary' | 'secondary' | 'link';\n secondaryButtonType?: 'primary' | 'secondary' | 'ghost' | 'link';\n hasLinkCta?: boolean | false;\n ctaText: string | '';\n secondaryCtaText: string | '';\n onCtaClick: () => void | (() => {});\n onSecondaryCtaClick: () => void | (() => {});\n /**\n * Accessible name for primary CTA button (screen reader only, if different from visible label).\n */\n ctaAriaLabel?: string;\n /**\n * Accessible name for secondary CTA button (screen reader only, if different from visible label).\n */\n secondaryCtaAriaLabel?: string;\n automationId?: string;\n // Optional title ID for external control (e.g., focus management)\n titleId?: string;\n}\n\nconst classNames: Map = {\n bannerCtn: `relative rounded-[12px] flex pr-3.5`,\n bannerContentCtn: 'pt-5 pl-6 pb-5 pr-2 flex flex-col gap-2',\n bannerLinkCta: 'text-[#1088e7] cursor-pointer text-base leading-6 hover: text-[#0078d4]',\n bannerImageCtn: 'flex',\n bannerCloseIconCtn:\n 'absolute top-[12px] right-[12px] cursor-pointer hover:bg-[var(--color-gray-100)] rounded-full p-1 inline-flex items-center justify-center',\n bannerButton: 'self-start'\n};\n\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>((props, ref) => {\n const {\n bannerClassName,\n bannerBgColor,\n title,\n titleTag: TitleTag = 'span',\n description,\n hasImage,\n imagePosition = 'right',\n imageWidth = '30%',\n imageAlt = '',\n hasCloseIcon,\n closeIconName,\n onClose,\n onBannerClick,\n hasLinkCta,\n onCtaClick,\n onSecondaryCtaClick,\n hasButtonCta,\n buttonType = 'secondary',\n ctaText,\n ctaAriaLabel,\n hasSecondaryButtonCta = false,\n secondaryButtonType = 'secondary',\n secondaryCtaText,\n secondaryCtaAriaLabel,\n automationId = '',\n titleId: providedTitleId\n } = props;\n\n const isClickableClass = onBannerClick ? 'cursor-pointer' : '';\n const titleId = useStableId(providedTitleId, 'banner-title');\n const descriptionId = useStableId(undefined, 'banner-description');\n\n const regionAttributes = getRegionAttributes({\n titleId,\n descriptionId: description ? descriptionId : undefined,\n isFocusable: !!providedTitleId\n });\n\n // When banner is clickable, make the content area keyboard-activatable (Enter/Space).\n // We intentionally keep this as an extra tab stop (per dashboard banner behavior).\n const { pressProps: bannerContentPressProps, role: bannerContentRole, tabIndex: bannerContentTabIndex } =\n useAccessiblePress({\n isNative: false,\n onClick: onBannerClick ? () => onBannerClick() : undefined\n });\n\n const bannerContentClickableProps = onBannerClick\n ? {\n ...bannerContentPressProps,\n role: bannerContentRole,\n tabIndex: bannerContentTabIndex\n }\n : {};\n\n const renderImage = () =>\n hasImage && (\n <div\n className={`${classNames.bannerImageCtn} ${isClickableClass} banner-image-ctn ${imagePosition === 'right' ? 'mr-5 ml-0 justify-end' : 'ml-5 mr-0 justify-start'} min-h-full`}\n style={{ width: imageWidth }}\n onClick={onBannerClick}\n >\n <img src={props.bannerImage} alt={imageAlt} className=\"max-w-[initial] h-[initial] max-h-[150px] object-contain\" />\n </div>\n );\n\n return (\n <div \n ref={ref}\n className={`${classNames.bannerCtn} ${isClickableClass} ${bannerClassName} banner-ctn`} \n style={{ backgroundColor: bannerBgColor }} \n data-automation-id={automationId}\n role={regionAttributes.role}\n aria-labelledby={regionAttributes['aria-labelledby']}\n aria-describedby={regionAttributes['aria-describedby']}\n tabIndex={regionAttributes.tabIndex}\n >\n {imagePosition === 'left' && renderImage()}\n <div \n className={`${classNames.bannerContentCtn} w-[100%] banner-content-ctn`} \n {...bannerContentClickableProps}\n >\n <TitleTag id={titleId} className=\"banner-title\" tabIndex={providedTitleId ? -1 : undefined}>{title}</TitleTag>\n <span id={descriptionId} className=\"banner-description\">{description}</span>\n <div className=\"flex gap-3\" onClick={(e) => e.stopPropagation()}>\n {hasLinkCta && (\n <Button \n type=\"link\" \n className={classNames.bannerLinkCta} \n onClick={onCtaClick} \n label={ctaText}\n ariaLabel={ctaAriaLabel}\n />\n )}\n {hasButtonCta && (\n <Button\n type={buttonType}\n size=\"sm\"\n label={ctaText}\n onClick={onCtaClick}\n className={classNames?.bannerButton}\n data-automation-id=\"banner-main-cta\"\n ariaLabel={ctaAriaLabel}\n />\n )}\n {hasSecondaryButtonCta && (\n <Button\n type={secondaryButtonType}\n size=\"sm\"\n label={secondaryCtaText}\n onClick={onSecondaryCtaClick}\n className={classNames?.secondaryBannerButton}\n data-automation-id=\"banner-secondary-cta\"\n ariaLabel={secondaryCtaAriaLabel}\n />\n )}\n </div>\n </div>\n {imagePosition === 'right' && renderImage()}\n {hasCloseIcon && (\n <Icon\n name={closeIconName}\n className={classNames.bannerCloseIconCtn}\n onClick={onClose}\n ariaLabel=\"Close banner\"\n shouldStopPropagation\n />\n )}\n </div>\n );\n});\n"],"names":["classNames","bannerCtn","bannerContentCtn","bannerLinkCta","bannerImageCtn","bannerCloseIconCtn","bannerButton","Banner","forwardRef","props","ref","bannerClassName","bannerBgColor","title","titleTag","TitleTag","description","hasImage","imagePosition","imageWidth","imageAlt","hasCloseIcon","closeIconName","onClose","onBannerClick","hasLinkCta","onCtaClick","onSecondaryCtaClick","hasButtonCta","buttonType","ctaText","ctaAriaLabel","hasSecondaryButtonCta","secondaryButtonType","secondaryCtaText","secondaryCtaAriaLabel","automationId","titleId","providedTitleId","isClickableClass","useStableId","descriptionId","undefined","regionAttributes","getRegionAttributes","isFocusable","pressProps","bannerContentPressProps","role","bannerContentRole","tabIndex","bannerContentTabIndex","useAccessiblePress","isNative","onClick","bannerContentClickableProps","renderImage","React","createElement","className","style","width","src","bannerImage","alt","backgroundColor","_extends","id","e","stopPropagation","Button","type","label","ariaLabel","size","secondaryBannerButton","Icon","name","shouldStopPropagation"],"mappings":"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"}
package/dist/index3.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import r, { forwardRef as _ } from "react";
2
- import { getA11yNameAttributes as I } from "./index67.js";
3
- import { useAccessiblePress as R } from "./index65.js";
2
+ import { getA11yNameAttributes as I } from "./index69.js";
3
+ import { useAccessiblePress as R } from "./index66.js";
4
4
  import { Icon as b } from "./index5.js";
5
5
  /* empty css */
6
6
  function c() {