se-design 1.0.80 → 1.0.81-dev2

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 (393) hide show
  1. package/dist/assets/icons/envelope.svg +4 -0
  2. package/dist/assets/icons/views.svg +7 -0
  3. package/dist/assets/style.css +1 -1
  4. package/dist/components/Checkbox/index.d.ts +4 -0
  5. package/dist/components/DatePicker/useDatePickerA11y.d.ts +1 -4
  6. package/dist/components/Dropdown/index.d.ts +4 -0
  7. package/dist/components/LabelChip/index.d.ts +1 -0
  8. package/dist/components/Popover/index.d.ts +9 -1
  9. package/dist/components/Radio/index.d.ts +4 -0
  10. package/dist/components/Toggle/index.d.ts +4 -0
  11. package/dist/index10.js.map +1 -1
  12. package/dist/index100.js.map +1 -1
  13. package/dist/index101.js.map +1 -1
  14. package/dist/index102.js.map +1 -1
  15. package/dist/index103.js.map +1 -1
  16. package/dist/index104.js.map +1 -1
  17. package/dist/index105.js.map +1 -1
  18. package/dist/index106.js.map +1 -1
  19. package/dist/index107.js.map +1 -1
  20. package/dist/index108.js.map +1 -1
  21. package/dist/index109.js.map +1 -1
  22. package/dist/index11.js +44 -43
  23. package/dist/index11.js.map +1 -1
  24. package/dist/index110.js.map +1 -1
  25. package/dist/index111.js.map +1 -1
  26. package/dist/index112.js.map +1 -1
  27. package/dist/index113.js.map +1 -1
  28. package/dist/index114.js.map +1 -1
  29. package/dist/index115.js.map +1 -1
  30. package/dist/index116.js.map +1 -1
  31. package/dist/index117.js.map +1 -1
  32. package/dist/index118.js.map +1 -1
  33. package/dist/index119.js.map +1 -1
  34. package/dist/index12.js +38 -31
  35. package/dist/index12.js.map +1 -1
  36. package/dist/index120.js +2 -2
  37. package/dist/index120.js.map +1 -1
  38. package/dist/index121.js +1 -1
  39. package/dist/index121.js.map +1 -1
  40. package/dist/index122.js +2 -2
  41. package/dist/index122.js.map +1 -1
  42. package/dist/index123.js +2 -2
  43. package/dist/index123.js.map +1 -1
  44. package/dist/index124.js +1 -1
  45. package/dist/index124.js.map +1 -1
  46. package/dist/index125.js +2 -2
  47. package/dist/index125.js.map +1 -1
  48. package/dist/index126.js +2 -2
  49. package/dist/index126.js.map +1 -1
  50. package/dist/index127.js +1 -1
  51. package/dist/index127.js.map +1 -1
  52. package/dist/index128.js +1 -1
  53. package/dist/index128.js.map +1 -1
  54. package/dist/index129.js +1 -1
  55. package/dist/index129.js.map +1 -1
  56. package/dist/index13.js +20 -19
  57. package/dist/index13.js.map +1 -1
  58. package/dist/index130.js +2 -2
  59. package/dist/index130.js.map +1 -1
  60. package/dist/index131.js +2 -2
  61. package/dist/index131.js.map +1 -1
  62. package/dist/index132.js +2 -2
  63. package/dist/index132.js.map +1 -1
  64. package/dist/index133.js +1 -1
  65. package/dist/index133.js.map +1 -1
  66. package/dist/index134.js +1 -1
  67. package/dist/index134.js.map +1 -1
  68. package/dist/index135.js +1 -1
  69. package/dist/index135.js.map +1 -1
  70. package/dist/index136.js +1 -1
  71. package/dist/index136.js.map +1 -1
  72. package/dist/index137.js +1 -1
  73. package/dist/index137.js.map +1 -1
  74. package/dist/index138.js +1 -1
  75. package/dist/index138.js.map +1 -1
  76. package/dist/index139.js +1 -1
  77. package/dist/index139.js.map +1 -1
  78. package/dist/index14.js.map +1 -1
  79. package/dist/index140.js +1 -1
  80. package/dist/index140.js.map +1 -1
  81. package/dist/index141.js +2 -2
  82. package/dist/index141.js.map +1 -1
  83. package/dist/index142.js +2 -2
  84. package/dist/index142.js.map +1 -1
  85. package/dist/index143.js +1 -1
  86. package/dist/index143.js.map +1 -1
  87. package/dist/index144.js +1 -1
  88. package/dist/index144.js.map +1 -1
  89. package/dist/index145.js +1 -1
  90. package/dist/index145.js.map +1 -1
  91. package/dist/index146.js +1 -1
  92. package/dist/index146.js.map +1 -1
  93. package/dist/index147.js +1 -1
  94. package/dist/index147.js.map +1 -1
  95. package/dist/index148.js +1 -1
  96. package/dist/index148.js.map +1 -1
  97. package/dist/index149.js +1 -1
  98. package/dist/index149.js.map +1 -1
  99. package/dist/index150.js +2 -2
  100. package/dist/index150.js.map +1 -1
  101. package/dist/index151.js +1 -1
  102. package/dist/index151.js.map +1 -1
  103. package/dist/index152.js +2 -2
  104. package/dist/index152.js.map +1 -1
  105. package/dist/index153.js +2 -2
  106. package/dist/index153.js.map +1 -1
  107. package/dist/index154.js +2 -2
  108. package/dist/index154.js.map +1 -1
  109. package/dist/index155.js +2 -2
  110. package/dist/index155.js.map +1 -1
  111. package/dist/index156.js +1 -1
  112. package/dist/index156.js.map +1 -1
  113. package/dist/index157.js +1 -1
  114. package/dist/index157.js.map +1 -1
  115. package/dist/index158.js +1 -1
  116. package/dist/index158.js.map +1 -1
  117. package/dist/index159.js +1 -1
  118. package/dist/index159.js.map +1 -1
  119. package/dist/index16.js +1 -1
  120. package/dist/index16.js.map +1 -1
  121. package/dist/index160.js +1 -1
  122. package/dist/index160.js.map +1 -1
  123. package/dist/index161.js +1 -1
  124. package/dist/index161.js.map +1 -1
  125. package/dist/index162.js +1 -1
  126. package/dist/index162.js.map +1 -1
  127. package/dist/index163.js +1 -1
  128. package/dist/index163.js.map +1 -1
  129. package/dist/index164.js +1 -1
  130. package/dist/index164.js.map +1 -1
  131. package/dist/index165.js +1 -1
  132. package/dist/index165.js.map +1 -1
  133. package/dist/index166.js +1 -1
  134. package/dist/index166.js.map +1 -1
  135. package/dist/index167.js +1 -1
  136. package/dist/index167.js.map +1 -1
  137. package/dist/index168.js +1 -1
  138. package/dist/index168.js.map +1 -1
  139. package/dist/index169.js +1 -1
  140. package/dist/index169.js.map +1 -1
  141. package/dist/index17.js.map +1 -1
  142. package/dist/index170.js +1 -1
  143. package/dist/index170.js.map +1 -1
  144. package/dist/index171.js +1 -1
  145. package/dist/index171.js.map +1 -1
  146. package/dist/index172.js +1 -1
  147. package/dist/index172.js.map +1 -1
  148. package/dist/index173.js +1 -1
  149. package/dist/index173.js.map +1 -1
  150. package/dist/index174.js +1 -1
  151. package/dist/index174.js.map +1 -1
  152. package/dist/index175.js +1 -1
  153. package/dist/index175.js.map +1 -1
  154. package/dist/index176.js +1 -1
  155. package/dist/index176.js.map +1 -1
  156. package/dist/index177.js +1 -1
  157. package/dist/index177.js.map +1 -1
  158. package/dist/index178.js +1 -1
  159. package/dist/index178.js.map +1 -1
  160. package/dist/index179.js +1 -1
  161. package/dist/index179.js.map +1 -1
  162. package/dist/index18.js.map +1 -1
  163. package/dist/index180.js +2 -2
  164. package/dist/index180.js.map +1 -1
  165. package/dist/index181.js +2 -2
  166. package/dist/index181.js.map +1 -1
  167. package/dist/index182.js +1 -1
  168. package/dist/index182.js.map +1 -1
  169. package/dist/index183.js +1 -1
  170. package/dist/index183.js.map +1 -1
  171. package/dist/index184.js +2 -2
  172. package/dist/index184.js.map +1 -1
  173. package/dist/index185.js +2 -2
  174. package/dist/index185.js.map +1 -1
  175. package/dist/index186.js +1 -1
  176. package/dist/index186.js.map +1 -1
  177. package/dist/index187.js +1 -1
  178. package/dist/index187.js.map +1 -1
  179. package/dist/index188.js +1 -1
  180. package/dist/index188.js.map +1 -1
  181. package/dist/index189.js +1 -1
  182. package/dist/index189.js.map +1 -1
  183. package/dist/index19.js +185 -163
  184. package/dist/index19.js.map +1 -1
  185. package/dist/index190.js +1 -1
  186. package/dist/index190.js.map +1 -1
  187. package/dist/index191.js +1 -1
  188. package/dist/index191.js.map +1 -1
  189. package/dist/index192.js +1 -1
  190. package/dist/index192.js.map +1 -1
  191. package/dist/index193.js +1 -1
  192. package/dist/index193.js.map +1 -1
  193. package/dist/index194.js +2 -2
  194. package/dist/index194.js.map +1 -1
  195. package/dist/index195.js +1 -1
  196. package/dist/index195.js.map +1 -1
  197. package/dist/index196.js +2 -2
  198. package/dist/index196.js.map +1 -1
  199. package/dist/index197.js +2 -149
  200. package/dist/index197.js.map +1 -1
  201. package/dist/index198.js +2 -9
  202. package/dist/index198.js.map +1 -1
  203. package/dist/index199.js +149 -6
  204. package/dist/index199.js.map +1 -1
  205. package/dist/index20.js.map +1 -1
  206. package/dist/index200.js +8 -4
  207. package/dist/index200.js.map +1 -1
  208. package/dist/index201.js +5 -39
  209. package/dist/index201.js.map +1 -1
  210. package/dist/index202.js +8 -0
  211. package/dist/index202.js.map +1 -0
  212. package/dist/index203.js +45 -0
  213. package/dist/index203.js.map +1 -0
  214. package/dist/index204.js +24 -0
  215. package/dist/index204.js.map +1 -0
  216. package/dist/index21.js.map +1 -1
  217. package/dist/{index208.js → index211.js} +1 -1
  218. package/dist/index211.js.map +1 -0
  219. package/dist/{index209.js → index212.js} +1 -1
  220. package/dist/{index209.js.map → index212.js.map} +1 -1
  221. package/dist/index22.js.map +1 -1
  222. package/dist/{index217.js → index220.js} +1 -1
  223. package/dist/{index217.js.map → index220.js.map} +1 -1
  224. package/dist/index228.js +1233 -43
  225. package/dist/index228.js.map +1 -1
  226. package/dist/index23.js +30 -28
  227. package/dist/index23.js.map +1 -1
  228. package/dist/index231.js +46 -0
  229. package/dist/index231.js.map +1 -0
  230. package/dist/index24.js.map +1 -1
  231. package/dist/index240.js +167 -16
  232. package/dist/index240.js.map +1 -1
  233. package/dist/index241.js +3 -9
  234. package/dist/index241.js.map +1 -1
  235. package/dist/index243.js +18 -4
  236. package/dist/index243.js.map +1 -1
  237. package/dist/index244.js +9 -169
  238. package/dist/index244.js.map +1 -1
  239. package/dist/index245.js +10 -11
  240. package/dist/index245.js.map +1 -1
  241. package/dist/index246.js +4 -5
  242. package/dist/index246.js.map +1 -1
  243. package/dist/index247.js +170 -6
  244. package/dist/index247.js.map +1 -1
  245. package/dist/index248.js +11 -38
  246. package/dist/index248.js.map +1 -1
  247. package/dist/index249.js +6 -2
  248. package/dist/index249.js.map +1 -1
  249. package/dist/index25.js +259 -236
  250. package/dist/index25.js.map +1 -1
  251. package/dist/index250.js +5 -7
  252. package/dist/index250.js.map +1 -1
  253. package/dist/index251.js +36 -325
  254. package/dist/index251.js.map +1 -1
  255. package/dist/index252.js +2 -50
  256. package/dist/index252.js.map +1 -1
  257. package/dist/index253.js +8 -2
  258. package/dist/index253.js.map +1 -1
  259. package/dist/index254.js +323 -72
  260. package/dist/index254.js.map +1 -1
  261. package/dist/index255.js +47 -90
  262. package/dist/index255.js.map +1 -1
  263. package/dist/index256.js +2 -52
  264. package/dist/index256.js.map +1 -1
  265. package/dist/index257.js +75 -7
  266. package/dist/index257.js.map +1 -1
  267. package/dist/index258.js +92 -4
  268. package/dist/index258.js.map +1 -1
  269. package/dist/index259.js +48 -48
  270. package/dist/index259.js.map +1 -1
  271. package/dist/index26.js.map +1 -1
  272. package/dist/index260.js +8 -2
  273. package/dist/index260.js.map +1 -1
  274. package/dist/index261.js +5 -2
  275. package/dist/index261.js.map +1 -1
  276. package/dist/index262.js +55 -0
  277. package/dist/index262.js.map +1 -0
  278. package/dist/index263.js +5 -0
  279. package/dist/index263.js.map +1 -0
  280. package/dist/index264.js +5 -0
  281. package/dist/index264.js.map +1 -0
  282. package/dist/index27.js.map +1 -1
  283. package/dist/index28.js +3 -3
  284. package/dist/index28.js.map +1 -1
  285. package/dist/index29.js +43 -41
  286. package/dist/index29.js.map +1 -1
  287. package/dist/index3.js.map +1 -1
  288. package/dist/index30.js +81 -79
  289. package/dist/index30.js.map +1 -1
  290. package/dist/index31.js.map +1 -1
  291. package/dist/index32.js.map +1 -1
  292. package/dist/index33.js +18 -16
  293. package/dist/index33.js.map +1 -1
  294. package/dist/index34.js.map +1 -1
  295. package/dist/index35.js +1 -1
  296. package/dist/index35.js.map +1 -1
  297. package/dist/index36.js +1 -1
  298. package/dist/index36.js.map +1 -1
  299. package/dist/index37.js.map +1 -1
  300. package/dist/index38.js +1 -1
  301. package/dist/index38.js.map +1 -1
  302. package/dist/index39.js +2 -2
  303. package/dist/index39.js.map +1 -1
  304. package/dist/index4.js.map +1 -1
  305. package/dist/index40.js +1 -1
  306. package/dist/index40.js.map +1 -1
  307. package/dist/index41.js.map +1 -1
  308. package/dist/index42.js.map +1 -1
  309. package/dist/index43.js.map +1 -1
  310. package/dist/index44.js +3 -3
  311. package/dist/index44.js.map +1 -1
  312. package/dist/index45.js +1 -1
  313. package/dist/index45.js.map +1 -1
  314. package/dist/index46.js +2 -2
  315. package/dist/index46.js.map +1 -1
  316. package/dist/index47.js.map +1 -1
  317. package/dist/index48.js.map +1 -1
  318. package/dist/index49.js +1 -1
  319. package/dist/index49.js.map +1 -1
  320. package/dist/index5.js.map +1 -1
  321. package/dist/index50.js.map +1 -1
  322. package/dist/index51.js +183 -175
  323. package/dist/index51.js.map +1 -1
  324. package/dist/index52.js +1 -1
  325. package/dist/index52.js.map +1 -1
  326. package/dist/index53.js +1 -1
  327. package/dist/index53.js.map +1 -1
  328. package/dist/index54.js.map +1 -1
  329. package/dist/index55.js.map +1 -1
  330. package/dist/index56.js.map +1 -1
  331. package/dist/index57.js +1 -1
  332. package/dist/index57.js.map +1 -1
  333. package/dist/index58.js.map +1 -1
  334. package/dist/index59.js.map +1 -1
  335. package/dist/index6.js +148 -144
  336. package/dist/index6.js.map +1 -1
  337. package/dist/index60.js.map +1 -1
  338. package/dist/index61.js.map +1 -1
  339. package/dist/index62.js.map +1 -1
  340. package/dist/index63.js +1 -1
  341. package/dist/index63.js.map +1 -1
  342. package/dist/index64.js.map +1 -1
  343. package/dist/index65.js +1 -1
  344. package/dist/index65.js.map +1 -1
  345. package/dist/index67.js.map +1 -1
  346. package/dist/index68.js.map +1 -1
  347. package/dist/index69.js.map +1 -1
  348. package/dist/index7.js +1 -1
  349. package/dist/index7.js.map +1 -1
  350. package/dist/index70.js.map +1 -1
  351. package/dist/index71.js.map +1 -1
  352. package/dist/index72.js +34 -33
  353. package/dist/index72.js.map +1 -1
  354. package/dist/index73.js.map +1 -1
  355. package/dist/index74.js.map +1 -1
  356. package/dist/index75.js.map +1 -1
  357. package/dist/index76.js +21 -21
  358. package/dist/index76.js.map +1 -1
  359. package/dist/index77.js.map +1 -1
  360. package/dist/index78.js.map +1 -1
  361. package/dist/index8.js.map +1 -1
  362. package/dist/index80.js.map +1 -1
  363. package/dist/index81.js.map +1 -1
  364. package/dist/index82.js.map +1 -1
  365. package/dist/index83.js.map +1 -1
  366. package/dist/index84.js.map +1 -1
  367. package/dist/index85.js.map +1 -1
  368. package/dist/index86.js.map +1 -1
  369. package/dist/index87.js.map +1 -1
  370. package/dist/index88.js.map +1 -1
  371. package/dist/index89.js.map +1 -1
  372. package/dist/index9.js +28 -26
  373. package/dist/index9.js.map +1 -1
  374. package/dist/index90.js.map +1 -1
  375. package/dist/index91.js.map +1 -1
  376. package/dist/index92.js.map +1 -1
  377. package/dist/index93.js.map +1 -1
  378. package/dist/index94.js.map +1 -1
  379. package/dist/index95.js.map +1 -1
  380. package/dist/index96.js.map +1 -1
  381. package/dist/index97.js.map +1 -1
  382. package/dist/index98.js.map +1 -1
  383. package/dist/index99.js.map +1 -1
  384. package/package.json +1 -1
  385. package/dist/index208.js.map +0 -1
  386. package/dist/index225.js +0 -1236
  387. package/dist/index225.js.map +0 -1
  388. package/dist/index237.js +0 -176
  389. package/dist/index237.js.map +0 -1
  390. package/dist/index238.js +0 -7
  391. package/dist/index238.js.map +0 -1
  392. package/dist/index242.js +0 -13
  393. package/dist/index242.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index59.js","sources":["../src/components/BottomSheet/index.tsx"],"sourcesContent":["import React, { FC, useState, useRef } from 'react';\nimport { CustomModal } from '../CustomModal';\nimport { Icon } from '../Icon';\n\nimport './style.scss';\n\nexport interface BottomSheetProps {\n isOpen: boolean;\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\ninterface BottomSheetContentProps {\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\nconst BottomSheetContent: FC<BottomSheetContentProps> = ({\n children = null,\n title = '',\n onClose = () => {},\n showCloseIcon = false,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = '',\n minHeight = 'auto'\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [startY, setStartY] = useState<number>(0);\n const [currentY, setCurrentY] = useState<number>(0);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setStartY(e.touches[0].clientY);\n setCurrentY(e.touches[0].clientY);\n setIsDragging(true);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return;\n\n const touchY = e.touches[0].clientY;\n const deltaY = touchY - startY;\n\n // Only allow dragging down\n if (deltaY > 0) {\n setCurrentY(touchY);\n if (contentRef.current) {\n contentRef.current.style.transform = `translateY(${deltaY}px)`;\n }\n }\n };\n\n const handleTouchEnd = () => {\n if (!isDragging) return;\n\n const deltaY = currentY - startY;\n const threshold = 60; // pixels to swipe down to trigger close\n\n if (deltaY > threshold) {\n // Trigger close\n onClose();\n } else {\n // Reset position\n if (contentRef.current) {\n contentRef.current.style.transform = 'translateY(0)';\n }\n }\n\n setIsDragging(false);\n setStartY(0);\n setCurrentY(0);\n };\n\n return (\n <div\n ref={contentRef}\n className={`se-design-bottom-sheet relative h-max max-h-[98vh] rounded-t-2xl flex flex-col pt-5 ${className}`}\n onClick={(e) => e.stopPropagation()}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n data-automation-id={automationId}\n style={{ minHeight }}\n >\n {(title || showBackButton) && (\n <div className=\"se-design-bottom-sheet-header flex items-center justify-left gap-3 mr-6 px-4\">\n {showBackButton && (\n <Icon\n name=\"back\"\n stroke=\"var(--color-gray-700)\"\n onClick={onBack}\n className=\"se-design-bottom-sheet-back-icon cursor-pointer\"\n automationId={`${automationId}-back-icon`}\n />\n )}\n {title && <div className=\"se-design-bottom-sheet-title text-lg font-semibold\">{title}</div>}\n </div>\n )}\n {showCloseIcon && (\n <Icon\n name=\"close\"\n onClick={onClose}\n className=\"se-design-bottom-sheet-close-icon absolute top-6 right-4 cursor-pointer z-10\"\n automationId={`${automationId}-close-icon`}\n />\n )}\n <div className=\"se-design-bottom-sheet-content px-4 pb-5 flex-1 min-h-0 overflow-y-auto\">{children}</div>\n </div>\n );\n};\n\nexport const BottomSheet: FC<BottomSheetProps> = ({\n isOpen = false,\n title = '',\n onClose = () => {},\n children = null,\n showCloseIcon = true,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = 'bottomsheet',\n minHeight = ''\n}) => {\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n onModalClick={onClose}\n className=\"custom-bottom-sheet\"\n renderModalContent={() => (\n <BottomSheetContent\n title={title}\n onClose={onClose}\n showCloseIcon={showCloseIcon}\n showBackButton={showBackButton}\n onBack={onBack}\n className={className}\n automationId={automationId}\n minHeight={minHeight}\n >\n {children}\n </BottomSheetContent>\n )}\n />\n );\n};\n"],"names":["BottomSheetContent","children","title","onClose","showCloseIcon","showBackButton","onBack","className","automationId","minHeight","contentRef","useRef","startY","setStartY","useState","currentY","setCurrentY","isDragging","setIsDragging","handleTouchStart","e","touches","clientY","handleTouchMove","touchY","deltaY","current","style","transform","handleTouchEnd","React","createElement","ref","onClick","stopPropagation","onTouchStart","onTouchMove","onTouchEnd","Icon","name","stroke","BottomSheet","isOpen","CustomModal","onModalClick","renderModalContent"],"mappings":"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"}
1
+ {"version":3,"file":"index59.js","sources":["../src/components/BottomSheet/index.tsx"],"sourcesContent":["import React, { FC, useState, useRef } from 'react';\nimport { CustomModal } from '../CustomModal';\nimport { Icon } from '../Icon';\n\nimport './style.scss';\n\nexport interface BottomSheetProps {\n isOpen: boolean;\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\ninterface BottomSheetContentProps {\n title?: string;\n onClose: () => void;\n showCloseIcon?: boolean;\n showBackButton?: boolean;\n onBack?: () => void;\n children: React.ReactNode;\n className?: string;\n automationId?: string;\n minHeight?: string;\n}\n\nconst BottomSheetContent: FC<BottomSheetContentProps> = ({\n children = null,\n title = '',\n onClose = () => {},\n showCloseIcon = false,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = '',\n minHeight = 'auto'\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [startY, setStartY] = useState<number>(0);\n const [currentY, setCurrentY] = useState<number>(0);\n const [isDragging, setIsDragging] = useState<boolean>(false);\n\n const handleTouchStart = (e: React.TouchEvent) => {\n setStartY(e.touches[0].clientY);\n setCurrentY(e.touches[0].clientY);\n setIsDragging(true);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!isDragging) return;\n\n const touchY = e.touches[0].clientY;\n const deltaY = touchY - startY;\n\n // Only allow dragging down\n if (deltaY > 0) {\n setCurrentY(touchY);\n if (contentRef.current) {\n contentRef.current.style.transform = `translateY(${deltaY}px)`;\n }\n }\n };\n\n const handleTouchEnd = () => {\n if (!isDragging) return;\n\n const deltaY = currentY - startY;\n const threshold = 60; // pixels to swipe down to trigger close\n\n if (deltaY > threshold) {\n // Trigger close\n onClose();\n } else {\n // Reset position\n if (contentRef.current) {\n contentRef.current.style.transform = 'translateY(0)';\n }\n }\n\n setIsDragging(false);\n setStartY(0);\n setCurrentY(0);\n };\n\n return (\n <div\n ref={contentRef}\n className={`se-design-bottom-sheet relative h-max max-h-[98vh] rounded-t-2xl flex flex-col pt-5 ${className}`}\n onClick={(e) => e.stopPropagation()}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n data-automation-id={automationId}\n style={{ minHeight }}\n >\n {(title || showBackButton) && (\n <div className=\"se-design-bottom-sheet-header flex items-center justify-left gap-3 mr-6 px-4\">\n {showBackButton && (\n <Icon\n name=\"back\"\n stroke=\"var(--color-gray-700)\"\n onClick={onBack}\n className=\"se-design-bottom-sheet-back-icon cursor-pointer\"\n automationId={`${automationId}-back-icon`}\n />\n )}\n {title && <div className=\"se-design-bottom-sheet-title text-lg font-semibold\">{title}</div>}\n </div>\n )}\n {showCloseIcon && (\n <Icon\n name=\"close\"\n onClick={onClose}\n className=\"se-design-bottom-sheet-close-icon absolute top-6 right-4 cursor-pointer z-10\"\n automationId={`${automationId}-close-icon`}\n />\n )}\n <div className=\"se-design-bottom-sheet-content px-4 pb-5 flex-1 min-h-0 overflow-y-auto\">{children}</div>\n </div>\n );\n};\n\nexport const BottomSheet: FC<BottomSheetProps> = ({\n isOpen = false,\n title = '',\n onClose = () => {},\n children = null,\n showCloseIcon = true,\n showBackButton = false,\n onBack = () => {},\n className = '',\n automationId = 'bottomsheet',\n minHeight = ''\n}) => {\n return (\n <CustomModal\n isOpen={isOpen}\n onClose={onClose}\n onModalClick={onClose}\n className=\"custom-bottom-sheet\"\n renderModalContent={() => (\n <BottomSheetContent\n title={title}\n onClose={onClose}\n showCloseIcon={showCloseIcon}\n showBackButton={showBackButton}\n onBack={onBack}\n className={className}\n automationId={automationId}\n minHeight={minHeight}\n >\n {children}\n </BottomSheetContent>\n )}\n />\n );\n};\n"],"names":["BottomSheetContent","children","title","onClose","showCloseIcon","showBackButton","onBack","className","automationId","minHeight","contentRef","useRef","startY","setStartY","useState","currentY","setCurrentY","isDragging","setIsDragging","handleTouchStart","e","touches","clientY","handleTouchMove","touchY","deltaY","current","style","transform","handleTouchEnd","React","createElement","ref","onClick","stopPropagation","onTouchStart","onTouchMove","onTouchEnd","Icon","name","stroke","BottomSheet","isOpen","CustomModal","onModalClick","renderModalContent"],"mappings":"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"}
package/dist/index6.js CHANGED
@@ -1,10 +1,10 @@
1
- import S from "./index80.js";
2
- import j from "./index81.js";
3
- import F from "./index82.js";
4
- import R from "./index83.js";
5
- import M from "./index84.js";
6
- import B from "./index85.js";
7
- import D from "./index86.js";
1
+ import j from "./index80.js";
2
+ import L from "./index81.js";
3
+ import R from "./index82.js";
4
+ import F from "./index83.js";
5
+ import B from "./index84.js";
6
+ import D from "./index85.js";
7
+ import M from "./index86.js";
8
8
  import T from "./index87.js";
9
9
  import q from "./index88.js";
10
10
  import G from "./index89.js";
@@ -44,21 +44,21 @@ import xs from "./index122.js";
44
44
  import As from "./index123.js";
45
45
  import ws from "./index124.js";
46
46
  import ys from "./index125.js";
47
- import Is from "./index126.js";
48
- import Ps from "./index127.js";
47
+ import Ps from "./index126.js";
48
+ import Is from "./index127.js";
49
49
  import Ns from "./index128.js";
50
- import $s from "./index129.js";
51
- import Cs from "./index130.js";
52
- import Ls from "./index131.js";
53
- import Os from "./index132.js";
54
- import Es from "./index133.js";
55
- import Ss from "./index134.js";
56
- import js from "./index135.js";
57
- import Fs from "./index136.js";
58
- import Rs from "./index137.js";
59
- import Ms from "./index138.js";
60
- import Bs from "./index139.js";
61
- import Ds from "./index140.js";
50
+ import Cs from "./index129.js";
51
+ import Os from "./index130.js";
52
+ import $s from "./index131.js";
53
+ import Es from "./index132.js";
54
+ import Ss from "./index133.js";
55
+ import js from "./index134.js";
56
+ import Ls from "./index135.js";
57
+ import Rs from "./index136.js";
58
+ import Fs from "./index137.js";
59
+ import Bs from "./index138.js";
60
+ import Ds from "./index139.js";
61
+ import Ms from "./index140.js";
62
62
  import Ts from "./index141.js";
63
63
  import qs from "./index142.js";
64
64
  import Gs from "./index143.js";
@@ -97,28 +97,30 @@ import xo from "./index175.js";
97
97
  import Ao from "./index176.js";
98
98
  import wo from "./index177.js";
99
99
  import yo from "./index178.js";
100
- import Io from "./index179.js";
101
- import Po from "./index180.js";
100
+ import Po from "./index179.js";
101
+ import Io from "./index180.js";
102
102
  import No from "./index181.js";
103
- import $o from "./index182.js";
104
- import Co from "./index183.js";
105
- import Lo from "./index184.js";
106
- import Oo from "./index185.js";
107
- import Eo from "./index186.js";
108
- import So from "./index187.js";
109
- import jo from "./index188.js";
110
- import Fo from "./index189.js";
111
- import Ro from "./index190.js";
112
- import Mo from "./index191.js";
113
- import Bo from "./index192.js";
114
- import Do from "./index193.js";
103
+ import Co from "./index182.js";
104
+ import Oo from "./index183.js";
105
+ import $o from "./index184.js";
106
+ import Eo from "./index185.js";
107
+ import So from "./index186.js";
108
+ import jo from "./index187.js";
109
+ import Lo from "./index188.js";
110
+ import Ro from "./index189.js";
111
+ import Fo from "./index190.js";
112
+ import Bo from "./index191.js";
113
+ import Do from "./index192.js";
114
+ import Mo from "./index193.js";
115
115
  import To from "./index194.js";
116
116
  import qo from "./index195.js";
117
117
  import Go from "./index196.js";
118
+ import Vo from "./index197.js";
119
+ import Ho from "./index198.js";
118
120
  import c from "react";
119
- import { ReactSVG as Vo } from "./index197.js";
120
- import { getA11yNameAttributes as Ho } from "./index78.js";
121
- import { useAccessiblePress as Jo } from "./index67.js";
121
+ import { ReactSVG as Jo } from "./index199.js";
122
+ import { getA11yNameAttributes as Ko } from "./index78.js";
123
+ import { useAccessiblePress as Qo } from "./index67.js";
122
124
  import "./index72.js";
123
125
  function a() {
124
126
  return a = Object.assign ? Object.assign.bind() : function(s) {
@@ -129,14 +131,14 @@ function a() {
129
131
  return s;
130
132
  }, a.apply(null, arguments);
131
133
  }
132
- const Ko = /* @__PURE__ */ Object.assign({
133
- "/src/assets/icons/ai-off.svg": S,
134
- "/src/assets/icons/ai-re-run.svg": j,
135
- "/src/assets/icons/ai-search.svg": F,
136
- "/src/assets/icons/ai-stars.svg": R,
137
- "/src/assets/icons/ai.svg": M,
138
- "/src/assets/icons/all-space.svg": B,
139
- "/src/assets/icons/arrow-head.svg": D,
134
+ const Uo = /* @__PURE__ */ Object.assign({
135
+ "/src/assets/icons/ai-off.svg": j,
136
+ "/src/assets/icons/ai-re-run.svg": L,
137
+ "/src/assets/icons/ai-search.svg": R,
138
+ "/src/assets/icons/ai-stars.svg": F,
139
+ "/src/assets/icons/ai.svg": B,
140
+ "/src/assets/icons/all-space.svg": D,
141
+ "/src/assets/icons/arrow-head.svg": M,
140
142
  "/src/assets/icons/attachment.svg": T,
141
143
  "/src/assets/icons/back.svg": q,
142
144
  "/src/assets/icons/banner-demo-img.svg": G,
@@ -170,94 +172,96 @@ const Ko = /* @__PURE__ */ Object.assign({
170
172
  "/src/assets/icons/edit-text.svg": ps,
171
173
  "/src/assets/icons/email-field.svg": ds,
172
174
  "/src/assets/icons/email.svg": us,
173
- "/src/assets/icons/fields-create.svg": hs,
174
- "/src/assets/icons/fields-panel.svg": ks,
175
- "/src/assets/icons/file-empty.svg": xs,
176
- "/src/assets/icons/file-filled-checked.svg": As,
177
- "/src/assets/icons/file-red.svg": ws,
178
- "/src/assets/icons/file.svg": ys,
175
+ "/src/assets/icons/envelope.svg": hs,
176
+ "/src/assets/icons/fields-create.svg": ks,
177
+ "/src/assets/icons/fields-panel.svg": xs,
178
+ "/src/assets/icons/file-empty.svg": As,
179
+ "/src/assets/icons/file-filled-checked.svg": ws,
180
+ "/src/assets/icons/file-red.svg": ys,
181
+ "/src/assets/icons/file.svg": Ps,
179
182
  "/src/assets/icons/fill-and-sign.svg": Is,
180
- "/src/assets/icons/filter.svg": Ps,
181
- "/src/assets/icons/folder-empty.svg": Ns,
182
- "/src/assets/icons/folder.svg": $s,
183
- "/src/assets/icons/gmail.svg": Cs,
184
- "/src/assets/icons/google-drive.svg": Ls,
185
- "/src/assets/icons/hamburger.svg": Os,
186
- "/src/assets/icons/hashtag.svg": Es,
187
- "/src/assets/icons/help-question.svg": Ss,
188
- "/src/assets/icons/history.svg": js,
183
+ "/src/assets/icons/filter.svg": Ns,
184
+ "/src/assets/icons/folder-empty.svg": Cs,
185
+ "/src/assets/icons/folder.svg": Os,
186
+ "/src/assets/icons/gmail.svg": $s,
187
+ "/src/assets/icons/google-drive.svg": Es,
188
+ "/src/assets/icons/hamburger.svg": Ss,
189
+ "/src/assets/icons/hashtag.svg": js,
190
+ "/src/assets/icons/help-question.svg": Ls,
191
+ "/src/assets/icons/history.svg": Rs,
189
192
  "/src/assets/icons/home.svg": Fs,
190
- "/src/assets/icons/hourglass.svg": Rs,
191
- "/src/assets/icons/image-field.svg": Ms,
192
- "/src/assets/icons/info.svg": Bs,
193
- "/src/assets/icons/initials-field.svg": Ds,
194
- "/src/assets/icons/kebab-menu.svg": Ts,
195
- "/src/assets/icons/left-align.svg": qs,
196
- "/src/assets/icons/library.svg": Gs,
197
- "/src/assets/icons/minus.svg": Vs,
198
- "/src/assets/icons/move-folder.svg": Hs,
199
- "/src/assets/icons/name-field.svg": Js,
200
- "/src/assets/icons/next.svg": Ks,
201
- "/src/assets/icons/observer.svg": Qs,
202
- "/src/assets/icons/office-building.svg": Us,
203
- "/src/assets/icons/onedrive.svg": Ws,
204
- "/src/assets/icons/outlook.svg": Xs,
205
- "/src/assets/icons/padlock.svg": Ys,
206
- "/src/assets/icons/pages.svg": Zs,
207
- "/src/assets/icons/pdf-file.svg": zs,
208
- "/src/assets/icons/people.svg": so,
209
- "/src/assets/icons/photo.svg": oo,
210
- "/src/assets/icons/plus.svg": _o,
211
- "/src/assets/icons/radio-field.svg": to,
212
- "/src/assets/icons/radio-filled.svg": io,
213
- "/src/assets/icons/radio.svg": ro,
214
- "/src/assets/icons/reports.svg": eo,
215
- "/src/assets/icons/repository.svg": co,
216
- "/src/assets/icons/reset.svg": ao,
217
- "/src/assets/icons/return.svg": mo,
218
- "/src/assets/icons/right-align.svg": go,
219
- "/src/assets/icons/rightSide.svg": vo,
220
- "/src/assets/icons/rotate-left.svg": lo,
221
- "/src/assets/icons/rotate-right.svg": no,
222
- "/src/assets/icons/rounded-plus.svg": fo,
223
- "/src/assets/icons/search.svg": bo,
224
- "/src/assets/icons/select-files.svg": po,
225
- "/src/assets/icons/shield-with-tick.svg": uo,
226
- "/src/assets/icons/shield.svg": ho,
227
- "/src/assets/icons/shipment-private.svg": ko,
228
- "/src/assets/icons/shipment.svg": xo,
229
- "/src/assets/icons/sidebar.svg": Ao,
230
- "/src/assets/icons/signature-field.svg": wo,
231
- "/src/assets/icons/signer.svg": yo,
193
+ "/src/assets/icons/hourglass.svg": Bs,
194
+ "/src/assets/icons/image-field.svg": Ds,
195
+ "/src/assets/icons/info.svg": Ms,
196
+ "/src/assets/icons/initials-field.svg": Ts,
197
+ "/src/assets/icons/kebab-menu.svg": qs,
198
+ "/src/assets/icons/left-align.svg": Gs,
199
+ "/src/assets/icons/library.svg": Vs,
200
+ "/src/assets/icons/minus.svg": Hs,
201
+ "/src/assets/icons/move-folder.svg": Js,
202
+ "/src/assets/icons/name-field.svg": Ks,
203
+ "/src/assets/icons/next.svg": Qs,
204
+ "/src/assets/icons/observer.svg": Us,
205
+ "/src/assets/icons/office-building.svg": Ws,
206
+ "/src/assets/icons/onedrive.svg": Xs,
207
+ "/src/assets/icons/outlook.svg": Ys,
208
+ "/src/assets/icons/padlock.svg": Zs,
209
+ "/src/assets/icons/pages.svg": zs,
210
+ "/src/assets/icons/pdf-file.svg": so,
211
+ "/src/assets/icons/people.svg": oo,
212
+ "/src/assets/icons/photo.svg": _o,
213
+ "/src/assets/icons/plus.svg": to,
214
+ "/src/assets/icons/radio-field.svg": io,
215
+ "/src/assets/icons/radio-filled.svg": ro,
216
+ "/src/assets/icons/radio.svg": eo,
217
+ "/src/assets/icons/reports.svg": co,
218
+ "/src/assets/icons/repository.svg": ao,
219
+ "/src/assets/icons/reset.svg": mo,
220
+ "/src/assets/icons/return.svg": go,
221
+ "/src/assets/icons/right-align.svg": vo,
222
+ "/src/assets/icons/rightSide.svg": lo,
223
+ "/src/assets/icons/rotate-left.svg": no,
224
+ "/src/assets/icons/rotate-right.svg": fo,
225
+ "/src/assets/icons/rounded-plus.svg": bo,
226
+ "/src/assets/icons/search.svg": po,
227
+ "/src/assets/icons/select-files.svg": uo,
228
+ "/src/assets/icons/shield-with-tick.svg": ho,
229
+ "/src/assets/icons/shield.svg": ko,
230
+ "/src/assets/icons/shipment-private.svg": xo,
231
+ "/src/assets/icons/shipment.svg": Ao,
232
+ "/src/assets/icons/sidebar.svg": wo,
233
+ "/src/assets/icons/signature-field.svg": yo,
234
+ "/src/assets/icons/signer.svg": Po,
232
235
  "/src/assets/icons/slideout.svg": Io,
233
- "/src/assets/icons/sms.svg": Po,
234
- "/src/assets/icons/sort-asc.svg": No,
235
- "/src/assets/icons/sort-desc.svg": $o,
236
- "/src/assets/icons/sort.svg": Co,
237
- "/src/assets/icons/space.svg": Lo,
238
- "/src/assets/icons/stamp-field.svg": Oo,
239
- "/src/assets/icons/stop.svg": Eo,
240
- "/src/assets/icons/success-check.svg": So,
241
- "/src/assets/icons/tag.svg": jo,
236
+ "/src/assets/icons/sms.svg": No,
237
+ "/src/assets/icons/sort-asc.svg": Co,
238
+ "/src/assets/icons/sort-desc.svg": Oo,
239
+ "/src/assets/icons/sort.svg": $o,
240
+ "/src/assets/icons/space.svg": Eo,
241
+ "/src/assets/icons/stamp-field.svg": So,
242
+ "/src/assets/icons/stop.svg": jo,
243
+ "/src/assets/icons/success-check.svg": Lo,
244
+ "/src/assets/icons/tag.svg": Ro,
242
245
  "/src/assets/icons/text-field.svg": Fo,
243
- "/src/assets/icons/tick.svg": Ro,
244
- "/src/assets/icons/title-field.svg": Mo,
245
- "/src/assets/icons/upload-csv.svg": Bo,
246
- "/src/assets/icons/warning.svg": Do,
247
- "/src/assets/icons/webinar-widget.svg": To,
248
- "/src/assets/icons/white-close.svg": qo,
249
- "/src/assets/icons/widget-demo-image.svg": Go
250
- }), l = (s, t, o, _) => {
246
+ "/src/assets/icons/tick.svg": Bo,
247
+ "/src/assets/icons/title-field.svg": Do,
248
+ "/src/assets/icons/upload-csv.svg": Mo,
249
+ "/src/assets/icons/views.svg": To,
250
+ "/src/assets/icons/warning.svg": qo,
251
+ "/src/assets/icons/webinar-widget.svg": Go,
252
+ "/src/assets/icons/white-close.svg": Vo,
253
+ "/src/assets/icons/widget-demo-image.svg": Ho
254
+ }), v = (s, t, o, _) => {
251
255
  t && s.hasAttribute("fill") && s.getAttribute("fill") !== "none" && s.setAttribute("fill", t), o && s.hasAttribute("stroke") && s.setAttribute("stroke", o), _ && s.hasAttribute("width") && s.setAttribute("width", _.toString()), _ && s.hasAttribute("height") && s.setAttribute("height", _.toString()), Array.from(s.children).forEach((e) => {
252
- l(e, t, o);
256
+ v(e, t, o);
253
257
  });
254
- }, Qo = /* @__PURE__ */ c.forwardRef((s, t) => {
258
+ }, Wo = /* @__PURE__ */ c.forwardRef((s, t) => {
255
259
  const {
256
260
  name: o = "",
257
261
  id: _,
258
262
  className: e = "",
259
263
  onClick: m,
260
- ariaLabel: g,
264
+ ariaLabel: l,
261
265
  ariaLabelledBy: n,
262
266
  ariaDescribedBy: f,
263
267
  ariaPressed: b,
@@ -270,7 +274,7 @@ const Ko = /* @__PURE__ */ Object.assign({
270
274
  shouldStopPropagation: A = !1,
271
275
  disabled: w = !1,
272
276
  htmlTitle: y
273
- } = s, I = {
277
+ } = s, P = {
274
278
  0: "rotate-0",
275
279
  45: "rotate-45",
276
280
  90: "rotate-90",
@@ -279,28 +283,28 @@ const Ko = /* @__PURE__ */ Object.assign({
279
283
  225: "rotate-[225deg]",
280
284
  270: "-rotate-90",
281
285
  315: "-rotate-45"
282
- }, v = Ko[`/src/assets/icons/${o}.svg`];
283
- if (!v)
286
+ }, g = Uo[`/src/assets/icons/${o}.svg`];
287
+ if (!g)
284
288
  return console.error(`Icon "${o}" not found in ICON_MAP.`), null;
285
- const i = typeof m == "function", P = g || o, {
289
+ const i = typeof m == "function", I = l || o, {
286
290
  pressProps: N,
287
- role: $,
288
- tabIndex: C,
289
- isDisabled: L
290
- } = Jo({
291
+ role: C,
292
+ tabIndex: O,
293
+ isDisabled: $
294
+ } = Qo({
291
295
  isNative: !1,
292
296
  onClick: i ? (r) => m?.(r) : void 0,
293
297
  disabled: i ? w : !1,
294
298
  stopPropagation: A
295
- }), O = Ho({
296
- ariaLabel: P,
299
+ }), E = Ko({
300
+ ariaLabel: I,
297
301
  ariaLabelledBy: n,
298
302
  ariaDescribedBy: f
299
- }), E = i ? {
303
+ }), S = i ? {
300
304
  ...N,
301
- role: $,
302
- tabIndex: C,
303
- ...O,
305
+ role: C,
306
+ tabIndex: O,
307
+ ...E,
304
308
  "aria-pressed": b,
305
309
  "aria-expanded": p,
306
310
  "aria-controls": d || void 0
@@ -308,21 +312,21 @@ const Ko = /* @__PURE__ */ Object.assign({
308
312
  return /* @__PURE__ */ c.createElement("div", a({
309
313
  ref: t,
310
314
  id: _,
311
- className: `se-design-svg-wrapper transition-transform duration-250 ease-linear rounded-[3px] ${i ? `${L ? "opacity-50 cursor-default" : "cursor-pointer focus-outline"}` : ""} ${e} ${I[k]}`,
315
+ className: `se-design-svg-wrapper transition-transform duration-250 ease-linear rounded-[3px] ${i ? `${$ ? "opacity-50 cursor-default" : "cursor-pointer focus-outline"}` : ""} ${e} ${P[k]}`,
312
316
  "aria-hidden": i ? void 0 : "true",
313
317
  title: y
314
- }, E, {
318
+ }, S, {
315
319
  "data-automation-id": s?.automationId
316
- }), /* @__PURE__ */ c.createElement(Vo, {
317
- src: v,
320
+ }), /* @__PURE__ */ c.createElement(Jo, {
321
+ src: g,
318
322
  wrapper: "span",
319
323
  beforeInjection: (r) => {
320
- r.setAttribute("aria-hidden", "true"), r.setAttribute("role", "none"), l(r, u, h, x);
324
+ r.setAttribute("aria-hidden", "true"), r.setAttribute("role", "none"), v(r, u, h, x);
321
325
  }
322
326
  }));
323
327
  });
324
- Qo.displayName = "Icon";
328
+ Wo.displayName = "Icon";
325
329
  export {
326
- Qo as Icon
330
+ Wo as Icon
327
331
  };
328
332
  //# sourceMappingURL=index6.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index6.js","sources":["../src/components/Icon/index.tsx"],"sourcesContent":["// TODO: `applyAttributesToElement` recursion drops `size` for nested elements (pre-existing).\nimport React from 'react';\nimport { ReactSVG } from 'react-svg';\nimport { getA11yNameAttributes, useAccessiblePress } from '../../utils/a11y';\n\n// Dynamically import icons using Vite's asset handling\nconst ICON_MAP: Record<string, string> = (import.meta as any).glob('/src/assets/icons/*.svg', {\n eager: true,\n query: '?url',\n import: 'default'\n});\n\nexport type RotationTypes = '0' | '45' | '90' | '135' | '180' | '225' | '270' | '315';\n\nexport type IconProps = {\n name: string;\n id?: string;\n className?: string;\n onClick?: (e?: React.MouseEvent<HTMLElement>) => void;\n /**\n * Accessible name when Icon is interactive (onClick is provided).\n * If omitted, we fall back to `name` and warn in development.\n */\n ariaLabel?: string;\n /**\n * ID(s) of visible element(s) that label this Icon when interactive.\n * Preferred over ariaLabel when a visible label exists (keeps SR and visual text in sync).\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) that describe this Icon when interactive (additional context).\n */\n ariaDescribedBy?: string;\n /**\n * Toggle state when Icon is used as a button (e.g., show/hide sidebar).\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaPressed?: boolean;\n /**\n * Expansion state when Icon controls a collapsible region/panel.\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaExpanded?: boolean;\n /**\n * ID of the element controlled by this Icon (for aria-controls).\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaControls?: string;\n fill?: string;\n stroke?: string;\n rotation?: RotationTypes;\n size?: number;\n shouldStopPropagation?: boolean;\n automationId?: string;\n /**\n * Disables the icon interaction while keeping it visible to AT with aria-disabled=\"true\".\n * Only applies when `onClick` is provided (interactive icon).\n */\n disabled?: boolean;\n /**\n * Native HTML title attribute — renders as a browser tooltip on hover.\n * For mouse users only; does not replace ariaLabel for screen readers.\n */\n htmlTitle?: string;\n};\n\nconst applyAttributesToElement = (element: Element, fill?: string, stroke?: string, size?: number) => {\n // Only modify existing attributes\n if (fill && element.hasAttribute('fill')) {\n const currentFill = element.getAttribute('fill');\n // Only update if the current fill is not \"none\"\n if (currentFill !== 'none') {\n element.setAttribute('fill', fill);\n }\n }\n\n if (stroke && element.hasAttribute('stroke')) {\n element.setAttribute('stroke', stroke);\n }\n\n if (size && element.hasAttribute('width')) {\n element.setAttribute('width', size.toString());\n }\n\n if (size && element.hasAttribute('height')) {\n element.setAttribute('height', size.toString());\n }\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach((child) => {\n applyAttributesToElement(child, fill, stroke);\n });\n};\n\nexport const Icon = React.forwardRef<HTMLDivElement, IconProps>((props, ref) => {\n const {\n name = '',\n id,\n className = '',\n onClick,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaPressed,\n ariaExpanded,\n ariaControls,\n fill,\n stroke,\n rotation = '0',\n size,\n shouldStopPropagation = false,\n disabled = false,\n htmlTitle\n } = props;\n const iconRotationClasses = {\n '0': 'rotate-0',\n '45': 'rotate-45',\n '90': 'rotate-90',\n '135': 'rotate-[135deg]',\n '180': 'rotate-180',\n '225': 'rotate-[225deg]',\n '270': '-rotate-90',\n '315': '-rotate-45'\n };\n const src = ICON_MAP[`/src/assets/icons/${name}.svg`];\n\n if (!src) {\n console.error(`Icon \"${name}\" not found in ICON_MAP.`);\n return null;\n }\n\n const isInteractive = typeof onClick === 'function';\n const computedAriaLabel = ariaLabel || name;\n\n if (isInteractive && !ariaLabel && (import.meta as { env?: { DEV?: boolean } }).env?.DEV) {\n // eslint-disable-next-line no-console\n console.warn(\n `[se-design/Icon] Missing ariaLabel for clickable icon \"${name}\". ` +\n `Falling back to aria-label=\"${computedAriaLabel}\".`\n );\n }\n\n const { pressProps, role, tabIndex, isDisabled } = useAccessiblePress({\n isNative: false,\n onClick: isInteractive ? (e: React.MouseEvent<HTMLElement>) => onClick?.(e) : undefined,\n disabled: isInteractive ? disabled : false,\n stopPropagation: shouldStopPropagation\n });\n\n // Compute accessible name/description props with correct precedence (aligns with Button/Link).\n const accessibleNameProps = getA11yNameAttributes({\n ariaLabel: computedAriaLabel,\n ariaLabelledBy,\n ariaDescribedBy\n });\n\n const interactiveProps = isInteractive\n ? {\n ...pressProps,\n role,\n tabIndex,\n ...accessibleNameProps,\n 'aria-pressed': ariaPressed,\n 'aria-expanded': ariaExpanded,\n 'aria-controls': ariaControls || undefined\n }\n : undefined;\n\n return (\n <div\n ref={ref}\n id={id}\n className={`se-design-svg-wrapper transition-transform duration-250 ease-linear rounded-[3px] ${\n isInteractive ? `${isDisabled ? 'opacity-50 cursor-default' : 'cursor-pointer focus-outline'}` : ''\n } ${className} ${iconRotationClasses[rotation]}`}\n aria-hidden={!isInteractive ? 'true' : undefined}\n title={htmlTitle}\n {...interactiveProps}\n data-automation-id={props?.automationId}\n >\n <ReactSVG\n src={src}\n wrapper=\"span\"\n beforeInjection={(svg) => {\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('role', 'none');\n applyAttributesToElement(svg, fill, stroke, size);\n }}\n />\n </div>\n );\n});\n\nIcon.displayName = 'Icon';\n"],"names":["ICON_MAP","import","applyAttributesToElement","element","fill","stroke","size","hasAttribute","getAttribute","setAttribute","toString","Array","from","children","forEach","child","Icon","React","forwardRef","props","ref","name","id","className","onClick","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaPressed","ariaExpanded","ariaControls","rotation","shouldStopPropagation","disabled","htmlTitle","iconRotationClasses","src","error","isInteractive","computedAriaLabel","pressProps","role","tabIndex","isDisabled","useAccessiblePress","isNative","e","undefined","stopPropagation","accessibleNameProps","getA11yNameAttributes","interactiveProps","createElement","_extends","title","automationId","ReactSVG","wrapper","beforeInjection","svg","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"index6.js","sources":["../src/components/Icon/index.tsx"],"sourcesContent":["// TODO: `applyAttributesToElement` recursion drops `size` for nested elements (pre-existing).\nimport React from 'react';\nimport { ReactSVG } from 'react-svg';\nimport { getA11yNameAttributes, useAccessiblePress } from '../../utils/a11y';\n\n// Dynamically import icons using Vite's asset handling\nconst ICON_MAP: Record<string, string> = (import.meta as any).glob('/src/assets/icons/*.svg', {\n eager: true,\n query: '?url',\n import: 'default'\n});\n\nexport type RotationTypes = '0' | '45' | '90' | '135' | '180' | '225' | '270' | '315';\n\nexport type IconProps = {\n name: string;\n id?: string;\n className?: string;\n onClick?: (e?: React.MouseEvent<HTMLElement>) => void;\n /**\n * Accessible name when Icon is interactive (onClick is provided).\n * If omitted, we fall back to `name` and warn in development.\n */\n ariaLabel?: string;\n /**\n * ID(s) of visible element(s) that label this Icon when interactive.\n * Preferred over ariaLabel when a visible label exists (keeps SR and visual text in sync).\n */\n ariaLabelledBy?: string;\n /**\n * ID(s) of element(s) that describe this Icon when interactive (additional context).\n */\n ariaDescribedBy?: string;\n /**\n * Toggle state when Icon is used as a button (e.g., show/hide sidebar).\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaPressed?: boolean;\n /**\n * Expansion state when Icon controls a collapsible region/panel.\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaExpanded?: boolean;\n /**\n * ID of the element controlled by this Icon (for aria-controls).\n * Only applies when `onClick` is provided (interactive icon).\n */\n ariaControls?: string;\n fill?: string;\n stroke?: string;\n rotation?: RotationTypes;\n size?: number;\n shouldStopPropagation?: boolean;\n automationId?: string;\n /**\n * Disables the icon interaction while keeping it visible to AT with aria-disabled=\"true\".\n * Only applies when `onClick` is provided (interactive icon).\n */\n disabled?: boolean;\n /**\n * Native HTML title attribute — renders as a browser tooltip on hover.\n * For mouse users only; does not replace ariaLabel for screen readers.\n */\n htmlTitle?: string;\n};\n\nconst applyAttributesToElement = (element: Element, fill?: string, stroke?: string, size?: number) => {\n // Only modify existing attributes\n if (fill && element.hasAttribute('fill')) {\n const currentFill = element.getAttribute('fill');\n // Only update if the current fill is not \"none\"\n if (currentFill !== 'none') {\n element.setAttribute('fill', fill);\n }\n }\n\n if (stroke && element.hasAttribute('stroke')) {\n element.setAttribute('stroke', stroke);\n }\n\n if (size && element.hasAttribute('width')) {\n element.setAttribute('width', size.toString());\n }\n\n if (size && element.hasAttribute('height')) {\n element.setAttribute('height', size.toString());\n }\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach((child) => {\n applyAttributesToElement(child, fill, stroke);\n });\n};\n\nexport const Icon = React.forwardRef<HTMLDivElement, IconProps>((props, ref) => {\n const {\n name = '',\n id,\n className = '',\n onClick,\n ariaLabel,\n ariaLabelledBy,\n ariaDescribedBy,\n ariaPressed,\n ariaExpanded,\n ariaControls,\n fill,\n stroke,\n rotation = '0',\n size,\n shouldStopPropagation = false,\n disabled = false,\n htmlTitle\n } = props;\n const iconRotationClasses = {\n '0': 'rotate-0',\n '45': 'rotate-45',\n '90': 'rotate-90',\n '135': 'rotate-[135deg]',\n '180': 'rotate-180',\n '225': 'rotate-[225deg]',\n '270': '-rotate-90',\n '315': '-rotate-45'\n };\n const src = ICON_MAP[`/src/assets/icons/${name}.svg`];\n\n if (!src) {\n console.error(`Icon \"${name}\" not found in ICON_MAP.`);\n return null;\n }\n\n const isInteractive = typeof onClick === 'function';\n const computedAriaLabel = ariaLabel || name;\n\n if (isInteractive && !ariaLabel && (import.meta as { env?: { DEV?: boolean } }).env?.DEV) {\n // eslint-disable-next-line no-console\n console.warn(\n `[se-design/Icon] Missing ariaLabel for clickable icon \"${name}\". ` +\n `Falling back to aria-label=\"${computedAriaLabel}\".`\n );\n }\n\n const { pressProps, role, tabIndex, isDisabled } = useAccessiblePress({\n isNative: false,\n onClick: isInteractive ? (e: React.MouseEvent<HTMLElement>) => onClick?.(e) : undefined,\n disabled: isInteractive ? disabled : false,\n stopPropagation: shouldStopPropagation\n });\n\n // Compute accessible name/description props with correct precedence (aligns with Button/Link).\n const accessibleNameProps = getA11yNameAttributes({\n ariaLabel: computedAriaLabel,\n ariaLabelledBy,\n ariaDescribedBy\n });\n\n const interactiveProps = isInteractive\n ? {\n ...pressProps,\n role,\n tabIndex,\n ...accessibleNameProps,\n 'aria-pressed': ariaPressed,\n 'aria-expanded': ariaExpanded,\n 'aria-controls': ariaControls || undefined\n }\n : undefined;\n\n return (\n <div\n ref={ref}\n id={id}\n className={`se-design-svg-wrapper transition-transform duration-250 ease-linear rounded-[3px] ${\n isInteractive ? `${isDisabled ? 'opacity-50 cursor-default' : 'cursor-pointer focus-outline'}` : ''\n } ${className} ${iconRotationClasses[rotation]}`}\n aria-hidden={!isInteractive ? 'true' : undefined}\n title={htmlTitle}\n {...interactiveProps}\n data-automation-id={props?.automationId}\n >\n <ReactSVG\n src={src}\n wrapper=\"span\"\n beforeInjection={(svg) => {\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('role', 'none');\n applyAttributesToElement(svg, fill, stroke, size);\n }}\n />\n </div>\n );\n});\n\nIcon.displayName = 'Icon';\n"],"names":["ICON_MAP","import","applyAttributesToElement","element","fill","stroke","size","hasAttribute","getAttribute","setAttribute","toString","Array","from","children","forEach","child","Icon","React","forwardRef","props","ref","name","id","className","onClick","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaPressed","ariaExpanded","ariaControls","rotation","shouldStopPropagation","disabled","htmlTitle","iconRotationClasses","src","console","error","isInteractive","computedAriaLabel","pressProps","role","tabIndex","isDisabled","useAccessiblePress","isNative","e","undefined","stopPropagation","accessibleNameProps","getA11yNameAttributes","interactiveProps","createElement","_extends","title","automationId","ReactSVG","wrapper","beforeInjection","svg","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index60.js","sources":["../src/components/TimePicker/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '../Button';\n\nexport interface TimePickerProps {\n initialHour?: number;\n initialMinute?: number;\n onApply?: (time: { hour: number; minute: number }) => void;\n ctaLabel?: string;\n onClose?: () => void;\n className?: string;\n automationId?: string;\n}\n\nconst ITEM_HEIGHT = 40;\nconst VISIBLE_ITEMS = 7;\nconst BUFFER_ITEMS = 3;\n\nconst HOURS = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, '0'));\nconst MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, '0'));\nconst PERIODS: ('AM' | 'PM')[] = ['AM', 'PM'];\n\ninterface ScrollColumnProps {\n items: readonly string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n automationId?: string;\n}\n\nconst ScrollColumn: React.FC<ScrollColumnProps> = ({ items, selectedIndex, onSelect, automationId = '' }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTo({ top: selectedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n }\n }, [selectedIndex]);\n\n const handleScroll = () => {\n if (!containerRef.current) return;\n\n if (scrollTimeout.current) clearTimeout(scrollTimeout.current);\n\n scrollTimeout.current = setTimeout(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const newIndex = Math.round(container.scrollTop / ITEM_HEIGHT);\n const clampedIndex = Math.max(0, Math.min(items.length - 1, newIndex));\n\n container.scrollTo({ top: clampedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n\n if (clampedIndex !== selectedIndex) onSelect(clampedIndex);\n }, 100);\n };\n\n const handleItemClick = (index: number) => {\n onSelect(index);\n containerRef.current?.scrollTo({ top: index * ITEM_HEIGHT, behavior: 'smooth' });\n };\n\n return (\n <div className=\"w-14\">\n <div\n ref={containerRef}\n className=\"overflow-y-auto [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n style={{\n height: VISIBLE_ITEMS * ITEM_HEIGHT,\n paddingTop: BUFFER_ITEMS * ITEM_HEIGHT,\n paddingBottom: BUFFER_ITEMS * ITEM_HEIGHT,\n scrollSnapType: 'y mandatory',\n scrollbarWidth: 'none'\n }}\n >\n {items.map((item, index) => (\n <div\n key={item}\n className={`flex items-center justify-center cursor-pointer select-none transition-colors h-10 ${\n index === selectedIndex\n ? 'text-[var(--color-blue-500)] font-semibold'\n : 'text-[var(--color-gray-700)] hover:text-[var(--color-blue-500)]'\n }`}\n onClick={() => handleItemClick(index)}\n style={{ scrollSnapAlign: 'center' }}\n data-automation-id={`${automationId}-item-${index}`}\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n initialHour = 12,\n initialMinute = 0,\n onApply,\n ctaLabel = 'Apply',\n onClose,\n className = '',\n automationId = 'timepicker'\n}) => {\n const [selectedHourIndex, setSelectedHourIndex] = useState(() => {\n if (initialHour === 0) return 11; // 0 = 12 AM\n if (initialHour > 12) return initialHour - 12 - 1; // 13-23 → 1-11 (PM hours)\n return initialHour - 1; // 1-12 → 0-11\n });\n const [selectedMinuteIndex, setSelectedMinuteIndex] = useState(Math.max(0, Math.min(59, initialMinute ?? 0)));\n const [selectedPeriodIndex, setSelectedPeriodIndex] = useState(\n () => (initialHour >= 12 ? 1 : 0) // 0-11 = AM, 12-23 = PM\n );\n\n const handleApply = () => {\n const hourIn24Format = selectedPeriodIndex === 1 ? selectedHourIndex + 12 : selectedHourIndex;\n onApply?.({\n hour: hourIn24Format + 1,\n minute: selectedMinuteIndex\n });\n onClose?.();\n };\n\n return (\n <div\n className={`se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${className}`}\n >\n <div className=\"se-design-timepicker-content w-full relative p-4\">\n <div className=\"absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0\" />\n <div className=\"flex justify-between gap-2 relative z-10\">\n <ScrollColumn\n items={HOURS}\n selectedIndex={selectedHourIndex}\n onSelect={setSelectedHourIndex}\n automationId={`${automationId}-hours`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={MINUTES}\n selectedIndex={selectedMinuteIndex}\n onSelect={setSelectedMinuteIndex}\n automationId={`${automationId}-minutes`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={PERIODS}\n selectedIndex={selectedPeriodIndex}\n onSelect={setSelectedPeriodIndex}\n automationId={`${automationId}-periods`}\n />\n </div>\n </div>\n <div className=\"se-design-timepicker-footer flex justify-end p-3 border-t border-[var(--color-gray-200)]\">\n <Button label={ctaLabel} type=\"primary\" onClick={handleApply} automationId={`${automationId}-apply-button`} />\n </div>\n </div>\n );\n};\n"],"names":["ITEM_HEIGHT","VISIBLE_ITEMS","BUFFER_ITEMS","HOURS","Array","from","length","_","i","String","padStart","MINUTES","PERIODS","ScrollColumn","items","selectedIndex","onSelect","automationId","containerRef","useRef","scrollTimeout","useEffect","current","scrollTo","top","behavior","handleScroll","setTimeout","container","newIndex","Math","round","scrollTop","clampedIndex","max","min","handleItemClick","index","React","createElement","className","ref","onScroll","style","height","paddingTop","paddingBottom","scrollSnapType","scrollbarWidth","map","item","key","onClick","scrollSnapAlign","TimePicker","initialHour","initialMinute","onApply","ctaLabel","onClose","selectedHourIndex","setSelectedHourIndex","useState","selectedMinuteIndex","setSelectedMinuteIndex","selectedPeriodIndex","setSelectedPeriodIndex","handleApply","hourIn24Format","hour","minute","Button","label","type"],"mappings":"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"}
1
+ {"version":3,"file":"index60.js","sources":["../src/components/TimePicker/index.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '../Button';\n\nexport interface TimePickerProps {\n initialHour?: number;\n initialMinute?: number;\n onApply?: (time: { hour: number; minute: number }) => void;\n ctaLabel?: string;\n onClose?: () => void;\n className?: string;\n automationId?: string;\n}\n\nconst ITEM_HEIGHT = 40;\nconst VISIBLE_ITEMS = 7;\nconst BUFFER_ITEMS = 3;\n\nconst HOURS = Array.from({ length: 12 }, (_, i) => String(i + 1).padStart(2, '0'));\nconst MINUTES = Array.from({ length: 60 }, (_, i) => String(i).padStart(2, '0'));\nconst PERIODS: ('AM' | 'PM')[] = ['AM', 'PM'];\n\ninterface ScrollColumnProps {\n items: readonly string[];\n selectedIndex: number;\n onSelect: (index: number) => void;\n automationId?: string;\n}\n\nconst ScrollColumn: React.FC<ScrollColumnProps> = ({ items, selectedIndex, onSelect, automationId = '' }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n containerRef.current.scrollTo({ top: selectedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n }\n }, [selectedIndex]);\n\n const handleScroll = () => {\n if (!containerRef.current) return;\n\n if (scrollTimeout.current) clearTimeout(scrollTimeout.current);\n\n scrollTimeout.current = setTimeout(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const newIndex = Math.round(container.scrollTop / ITEM_HEIGHT);\n const clampedIndex = Math.max(0, Math.min(items.length - 1, newIndex));\n\n container.scrollTo({ top: clampedIndex * ITEM_HEIGHT, behavior: 'smooth' });\n\n if (clampedIndex !== selectedIndex) onSelect(clampedIndex);\n }, 100);\n };\n\n const handleItemClick = (index: number) => {\n onSelect(index);\n containerRef.current?.scrollTo({ top: index * ITEM_HEIGHT, behavior: 'smooth' });\n };\n\n return (\n <div className=\"w-14\">\n <div\n ref={containerRef}\n className=\"overflow-y-auto [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n style={{\n height: VISIBLE_ITEMS * ITEM_HEIGHT,\n paddingTop: BUFFER_ITEMS * ITEM_HEIGHT,\n paddingBottom: BUFFER_ITEMS * ITEM_HEIGHT,\n scrollSnapType: 'y mandatory',\n scrollbarWidth: 'none'\n }}\n >\n {items.map((item, index) => (\n <div\n key={item}\n className={`flex items-center justify-center cursor-pointer select-none transition-colors h-10 ${\n index === selectedIndex\n ? 'text-[var(--color-blue-500)] font-semibold'\n : 'text-[var(--color-gray-700)] hover:text-[var(--color-blue-500)]'\n }`}\n onClick={() => handleItemClick(index)}\n style={{ scrollSnapAlign: 'center' }}\n data-automation-id={`${automationId}-item-${index}`}\n >\n {item}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n initialHour = 12,\n initialMinute = 0,\n onApply,\n ctaLabel = 'Apply',\n onClose,\n className = '',\n automationId = 'timepicker'\n}) => {\n const [selectedHourIndex, setSelectedHourIndex] = useState(() => {\n if (initialHour === 0) return 11; // 0 = 12 AM\n if (initialHour > 12) return initialHour - 12 - 1; // 13-23 → 1-11 (PM hours)\n return initialHour - 1; // 1-12 → 0-11\n });\n const [selectedMinuteIndex, setSelectedMinuteIndex] = useState(Math.max(0, Math.min(59, initialMinute ?? 0)));\n const [selectedPeriodIndex, setSelectedPeriodIndex] = useState(\n () => (initialHour >= 12 ? 1 : 0) // 0-11 = AM, 12-23 = PM\n );\n\n const handleApply = () => {\n const hourIn24Format = selectedPeriodIndex === 1 ? selectedHourIndex + 12 : selectedHourIndex;\n onApply?.({\n hour: hourIn24Format + 1,\n minute: selectedMinuteIndex\n });\n onClose?.();\n };\n\n return (\n <div\n className={`se-design-timepicker-container w-full min-w-[216px] bg-[var(--color-white)] rounded-xl shadow-md border border-[var(--color-gray-400)] overflow-hidden ${className}`}\n >\n <div className=\"se-design-timepicker-content w-full relative p-4\">\n <div className=\"absolute left-4 right-4 top-1/2 -translate-y-1/2 h-10 bg-[var(--color-blue-50)] rounded-lg pointer-events-none z-0\" />\n <div className=\"flex justify-between gap-2 relative z-10\">\n <ScrollColumn\n items={HOURS}\n selectedIndex={selectedHourIndex}\n onSelect={setSelectedHourIndex}\n automationId={`${automationId}-hours`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={MINUTES}\n selectedIndex={selectedMinuteIndex}\n onSelect={setSelectedMinuteIndex}\n automationId={`${automationId}-minutes`}\n />\n <div className=\"w-px bg-[var(--color-gray-200)]\" style={{ height: VISIBLE_ITEMS * ITEM_HEIGHT }} />\n <ScrollColumn\n items={PERIODS}\n selectedIndex={selectedPeriodIndex}\n onSelect={setSelectedPeriodIndex}\n automationId={`${automationId}-periods`}\n />\n </div>\n </div>\n <div className=\"se-design-timepicker-footer flex justify-end p-3 border-t border-[var(--color-gray-200)]\">\n <Button label={ctaLabel} type=\"primary\" onClick={handleApply} automationId={`${automationId}-apply-button`} />\n </div>\n </div>\n );\n};\n"],"names":["ITEM_HEIGHT","VISIBLE_ITEMS","BUFFER_ITEMS","HOURS","Array","from","length","_","i","String","padStart","MINUTES","PERIODS","ScrollColumn","items","selectedIndex","onSelect","automationId","containerRef","useRef","scrollTimeout","useEffect","current","scrollTo","top","behavior","handleScroll","clearTimeout","setTimeout","container","newIndex","Math","round","scrollTop","clampedIndex","max","min","handleItemClick","index","React","createElement","className","ref","onScroll","style","height","paddingTop","paddingBottom","scrollSnapType","scrollbarWidth","map","item","key","onClick","scrollSnapAlign","TimePicker","initialHour","initialMinute","onApply","ctaLabel","onClose","selectedHourIndex","setSelectedHourIndex","useState","selectedMinuteIndex","setSelectedMinuteIndex","selectedPeriodIndex","setSelectedPeriodIndex","handleApply","hourIn24Format","hour","minute","Button","label","type"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index61.js","sources":["../src/components/InfoTooltip/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { Popover } from '../Popover';\nimport './styles.scss';\n\nexport interface InfoTooltipProps {\n label: string;\n children: React.ReactNode;\n iconColor?: string;\n /**\n * Background color shown on hover. Defaults to var(--color-blue-200).\n */\n hoverBackgroundColor?: string;\n isDisabled?: boolean;\n /**\n * Remove padding from tooltip wrapper (useful for precise alignment)\n */\n noPadding?: boolean;\n}\n\nexport const InfoTooltip = ({\n label,\n children,\n iconColor = '',\n hoverBackgroundColor,\n isDisabled = false,\n noPadding = false\n}: InfoTooltipProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n // Show tooltip on hover OR focus (for keyboard accessibility)\n const isOpen = isHovered || isFocused;\n\n // Global Escape key handler (W3C WAI-ARIA tooltip pattern requirement)\n const handleEscapeKey = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsHovered(false);\n setIsFocused(false);\n // Prevent other handlers (e.g., modal) from also closing - \"innermost first\" pattern\n event.stopImmediatePropagation();\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n return () => document.removeEventListener('keydown', handleEscapeKey);\n }\n }, [isOpen, handleEscapeKey]);\n\n const interactionHandlers = {\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n onFocus: (event: React.FocusEvent<HTMLDivElement>) => {\n const focusTarget = event.target as HTMLElement;\n if (focusTarget.matches(':focus-visible')) {\n setIsFocused(true);\n }\n },\n onBlur: () => setIsFocused(false)\n };\n\n return (\n <div\n className={isDisabled ? 'se-design-info-tooltip-wrapper-disabled' : ''}\n {...(isDisabled ? {} : interactionHandlers)}\n >\n <Popover\n position={'bottom-center'}\n isPopoverOpen={isOpen}\n onPopoverToggle={(open) => {\n // Sync popover state changes (e.g., Escape key) back to component state\n if (!open) {\n setIsHovered(false);\n setIsFocused(false);\n }\n }}\n renderPopoverSrcElement={() => (\n <div\n className={`se-design-info-tooltip-src ${noPadding ? 'no-padding' : ''} ${\n isDisabled ? 'se-design-info-tooltip-disabled' : ''\n }`}\n style={\n {\n '--info-tooltip-icon-color': iconColor,\n ...(hoverBackgroundColor ? { '--info-tooltip-hover-bg': hoverBackgroundColor } : {}),\n cursor: isDisabled ? 'not-allowed' : 'pointer'\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n )}\n renderPopoverContents={() => (\n <div className=\"se-design-info-tooltip-content\" data-automation-id=\"se-design-info-tooltip-content\">\n {label}\n </div>\n )}\n isWithPortal\n noBorder\n disableClickToggle\n popoverContentStyleProperty={{\n zIndex: 2000,\n backgroundColor: ''\n }}\n />\n </div>\n );\n};\n"],"names":["InfoTooltip","label","children","iconColor","hoverBackgroundColor","isDisabled","noPadding","isHovered","setIsHovered","useState","isFocused","setIsFocused","isOpen","handleEscapeKey","useCallback","event","key","stopImmediatePropagation","useEffect","addEventListener","document","removeEventListener","interactionHandlers","onMouseEnter","onMouseLeave","onFocus","focusTarget","target","matches","onBlur","React","createElement","_extends","className","Popover","position","isPopoverOpen","onPopoverToggle","open","renderPopoverSrcElement","style","cursor","renderPopoverContents","isWithPortal","noBorder","disableClickToggle","popoverContentStyleProperty","zIndex","backgroundColor"],"mappings":";;;;;;;;;;;;AAmBO,MAAMA,IAAcA,CAAC;AAAA,EAC1BC,OAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,sBAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,WAAAA,IAAY;AACI,MAAM;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAG1CG,IAASL,KAAaG,GAGtBG,IAAkBC,EAAY,CAACC,MAAyB;AACxDA,IAAAA,EAAMC,QAAQ,aAChBR,EAAa,EAAK,GAClBG,EAAa,EAAK,GAElBI,EAAME,yBAAyB;AAAA,EAEnC,GAAG,CAAE,CAAA;AAELC,EAAAA,EAAU,MAAM;AACd,QAAIN;AACOO,sBAAAA,iBAAiB,WAAWN,CAAe,GAC7C,MAAMO,SAASC,oBAAoB,WAAWR,CAAe;AAAA,EACtE,GACC,CAACD,GAAQC,CAAe,CAAC;AAE5B,QAAMS,IAAsB;AAAA,IAC1BC,cAAcA,MAAMf,EAAa,EAAI;AAAA,IACrCgB,cAAcA,MAAMhB,EAAa,EAAK;AAAA,IACtCiB,SAASA,CAACV,MAA4C;AAEhDW,MADgBX,EAAMY,OACVC,QAAQ,gBAAgB,KACtCjB,EAAa,EAAI;AAAA,IAErB;AAAA,IACAkB,QAAQA,MAAMlB,EAAa,EAAK;AAAA,EAAA;AAIhCmB,SAAAA,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IACEC,WAAW5B,IAAa,4CAA4C;AAAA,EAAA,GAC/DA,IAAa,CAAA,IAAKiB,CAAmB,GAE1CQ,gBAAAA,EAAAC,cAACG,GAAO;AAAA,IACNC,UAAU;AAAA,IACVC,eAAexB;AAAAA,IACfyB,iBAAkBC,CAASA,MAAA;AAEzB,MAAKA,MACH9B,EAAa,EAAK,GAClBG,EAAa,EAAK;AAAA,IAEtB;AAAA,IACA4B,yBAAyBA,MACvBR,gBAAAA,EAAAA,cAAA,OAAA;AAAA,MACEE,WAAW,8BAA8B3B,IAAY,eAAe,EAAE,IACpED,IAAa,oCAAoC,EAAE;AAAA,MAErDmC,OACE;AAAA,QACE,6BAA6BrC;AAAAA,QAC7B,GAAIC,IAAuB;AAAA,UAAE,2BAA2BA;AAAAA,QAAAA,IAAyB,CAAC;AAAA,QAClFqC,QAAQpC,IAAa,gBAAgB;AAAA,MACvC;AAAA,OAGDH,CACE;AAAA,IAEPwC,uBAAuBA,MACrBX,gBAAAA,EAAAA,cAAA,OAAA;AAAA,MAAKE,WAAU;AAAA,MAAiC,sBAAmB;AAAA,OAChEhC,CACE;AAAA,IAEP0C,cAAY;AAAA,IACZC,UAAQ;AAAA,IACRC,oBAAkB;AAAA,IAClBC,6BAA6B;AAAA,MAC3BC,QAAQ;AAAA,MACRC,iBAAiB;AAAA,IACnB;AAAA,EACD,CAAA,CACE;AAET;"}
1
+ {"version":3,"file":"index61.js","sources":["../src/components/InfoTooltip/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from 'react';\nimport { Popover } from '../Popover';\nimport './styles.scss';\n\nexport interface InfoTooltipProps {\n label: string;\n children: React.ReactNode;\n iconColor?: string;\n /**\n * Background color shown on hover. Defaults to var(--color-blue-200).\n */\n hoverBackgroundColor?: string;\n isDisabled?: boolean;\n /**\n * Remove padding from tooltip wrapper (useful for precise alignment)\n */\n noPadding?: boolean;\n}\n\nexport const InfoTooltip = ({\n label,\n children,\n iconColor = '',\n hoverBackgroundColor,\n isDisabled = false,\n noPadding = false\n}: InfoTooltipProps) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n // Show tooltip on hover OR focus (for keyboard accessibility)\n const isOpen = isHovered || isFocused;\n\n // Global Escape key handler (W3C WAI-ARIA tooltip pattern requirement)\n const handleEscapeKey = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsHovered(false);\n setIsFocused(false);\n // Prevent other handlers (e.g., modal) from also closing - \"innermost first\" pattern\n event.stopImmediatePropagation();\n }\n }, []);\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n return () => document.removeEventListener('keydown', handleEscapeKey);\n }\n }, [isOpen, handleEscapeKey]);\n\n const interactionHandlers = {\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n onFocus: (event: React.FocusEvent<HTMLDivElement>) => {\n const focusTarget = event.target as HTMLElement;\n if (focusTarget.matches(':focus-visible')) {\n setIsFocused(true);\n }\n },\n onBlur: () => setIsFocused(false)\n };\n\n return (\n <div\n className={isDisabled ? 'se-design-info-tooltip-wrapper-disabled' : ''}\n {...(isDisabled ? {} : interactionHandlers)}\n >\n <Popover\n position={'bottom-center'}\n isPopoverOpen={isOpen}\n onPopoverToggle={(open) => {\n // Sync popover state changes (e.g., Escape key) back to component state\n if (!open) {\n setIsHovered(false);\n setIsFocused(false);\n }\n }}\n renderPopoverSrcElement={() => (\n <div\n className={`se-design-info-tooltip-src ${noPadding ? 'no-padding' : ''} ${\n isDisabled ? 'se-design-info-tooltip-disabled' : ''\n }`}\n style={\n {\n '--info-tooltip-icon-color': iconColor,\n ...(hoverBackgroundColor ? { '--info-tooltip-hover-bg': hoverBackgroundColor } : {}),\n cursor: isDisabled ? 'not-allowed' : 'pointer'\n } as React.CSSProperties\n }\n >\n {children}\n </div>\n )}\n renderPopoverContents={() => (\n <div className=\"se-design-info-tooltip-content\" data-automation-id=\"se-design-info-tooltip-content\">\n {label}\n </div>\n )}\n isWithPortal\n noBorder\n disableClickToggle\n popoverContentStyleProperty={{\n zIndex: 2000,\n backgroundColor: ''\n }}\n />\n </div>\n );\n};\n"],"names":["InfoTooltip","label","children","iconColor","hoverBackgroundColor","isDisabled","noPadding","isHovered","setIsHovered","useState","isFocused","setIsFocused","isOpen","handleEscapeKey","useCallback","event","key","stopImmediatePropagation","useEffect","document","addEventListener","removeEventListener","interactionHandlers","onMouseEnter","onMouseLeave","onFocus","target","matches","onBlur","React","createElement","_extends","className","Popover","position","isPopoverOpen","onPopoverToggle","open","renderPopoverSrcElement","style","cursor","renderPopoverContents","isWithPortal","noBorder","disableClickToggle","popoverContentStyleProperty","zIndex","backgroundColor"],"mappings":";;;;;;;;;;;;AAmBO,MAAMA,IAAcA,CAAC;AAAA,EAC1BC,OAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,WAAAA,IAAY;AAAA,EACZC,sBAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,WAAAA,IAAY;AACI,MAAM;AACtB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK,GAG1CG,IAASL,KAAaG,GAGtBG,IAAkBC,EAAY,CAACC,MAAyB;AAC5D,IAAIA,EAAMC,QAAQ,aAChBR,EAAa,EAAK,GAClBG,EAAa,EAAK,GAElBI,EAAME,yBAAAA;AAAAA,EAEV,GAAG,CAAA,CAAE;AAELC,EAAAA,EAAU,MAAM;AACd,QAAIN;AACFO,sBAASC,iBAAiB,WAAWP,CAAe,GAC7C,MAAMM,SAASE,oBAAoB,WAAWR,CAAe;AAAA,EAExE,GAAG,CAACD,GAAQC,CAAe,CAAC;AAE5B,QAAMS,IAAsB;AAAA,IAC1BC,cAAcA,MAAMf,EAAa,EAAI;AAAA,IACrCgB,cAAcA,MAAMhB,EAAa,EAAK;AAAA,IACtCiB,SAASA,CAACV,MAA4C;AAEpD,MADoBA,EAAMW,OACVC,QAAQ,gBAAgB,KACtChB,EAAa,EAAI;AAAA,IAErB;AAAA,IACAiB,QAAQA,MAAMjB,EAAa,EAAK;AAAA,EAAA;AAGlC,SACEkB,gBAAAA,EAAAC,cAAA,OAAAC,EAAA;AAAA,IACEC,WAAW3B,IAAa,4CAA4C;AAAA,EAAA,GAC/DA,IAAa,CAAA,IAAKiB,CAAmB,GAE1CO,gBAAAA,EAAAC,cAACG,GAAO;AAAA,IACNC,UAAU;AAAA,IACVC,eAAevB;AAAAA,IACfwB,iBAAkBC,CAAAA,MAAS;AAEzB,MAAKA,MACH7B,EAAa,EAAK,GAClBG,EAAa,EAAK;AAAA,IAEtB;AAAA,IACA2B,yBAAyBA,MACvBT,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MACEE,WAAW,8BAA8B1B,IAAY,eAAe,EAAE,IACpED,IAAa,oCAAoC,EAAE;AAAA,MAErDkC,OACE;AAAA,QACE,6BAA6BpC;AAAAA,QAC7B,GAAIC,IAAuB;AAAA,UAAE,2BAA2BA;AAAAA,QAAAA,IAAyB,CAAA;AAAA,QACjFoC,QAAQnC,IAAa,gBAAgB;AAAA,MAAA;AAAA,IACvC,GAGDH,CACE;AAAA,IAEPuC,uBAAuBA,MACrBZ,gBAAAA,EAAAC,cAAA,OAAA;AAAA,MAAKE,WAAU;AAAA,MAAiC,sBAAmB;AAAA,IAAA,GAChE/B,CACE;AAAA,IAEPyC,cAAY;AAAA,IACZC,UAAQ;AAAA,IACRC,oBAAkB;AAAA,IAClBC,6BAA6B;AAAA,MAC3BC,QAAQ;AAAA,MACRC,iBAAiB;AAAA,IAAA;AAAA,EACnB,CACD,CACE;AAET;"}