eidos-ui 3.3.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/README.md +17 -5
  2. package/dist/{Input.types-XrJTI0JC.d.ts → Input.types-CSDMaZNe.d.ts} +10 -0
  3. package/dist/{Input.types-DFZNyJGF.d.cts → Input.types-D7-sWq-q.d.cts} +10 -0
  4. package/dist/{Select.types-CAkT2ACt.d.cts → Select.types-2p-mpaBL.d.cts} +1 -1
  5. package/dist/{Select.types-B4kDpkGB.d.ts → Select.types-BqaD7bmB.d.ts} +1 -1
  6. package/dist/alert/index.cjs +5 -5
  7. package/dist/alert/index.js +4 -4
  8. package/dist/button/index.cjs +4 -4
  9. package/dist/button/index.js +3 -3
  10. package/dist/checkbox/index.cjs +2 -2
  11. package/dist/checkbox/index.js +1 -1
  12. package/dist/chip/index.cjs +4 -4
  13. package/dist/chip/index.js +3 -3
  14. package/dist/{chunk-RYOQYYDO.js → chunk-22EKNTWJ.js} +9 -5
  15. package/dist/chunk-22EKNTWJ.js.map +1 -0
  16. package/dist/{chunk-3E7TKBQI.cjs → chunk-27UANGPW.cjs} +14 -6
  17. package/dist/chunk-27UANGPW.cjs.map +1 -0
  18. package/dist/{chunk-CJGFRPAS.cjs → chunk-3QQKWXMV.cjs} +4 -4
  19. package/dist/chunk-3QQKWXMV.cjs.map +1 -0
  20. package/dist/{chunk-Q5KQVBQP.cjs → chunk-3S33BIN2.cjs} +18 -16
  21. package/dist/chunk-3S33BIN2.cjs.map +1 -0
  22. package/dist/{chunk-ZPDETHQ7.js → chunk-3WV6RTXX.js} +3 -3
  23. package/dist/{chunk-ZPDETHQ7.js.map → chunk-3WV6RTXX.js.map} +1 -1
  24. package/dist/chunk-44T4HMFU.js +88 -0
  25. package/dist/chunk-44T4HMFU.js.map +1 -0
  26. package/dist/{chunk-3EPND5M2.cjs → chunk-4LET2PEX.cjs} +12 -12
  27. package/dist/chunk-4LET2PEX.cjs.map +1 -0
  28. package/dist/{chunk-R4M6SNUU.cjs → chunk-5E4DYTZ3.cjs} +48 -37
  29. package/dist/chunk-5E4DYTZ3.cjs.map +1 -0
  30. package/dist/{chunk-I5XR2V4A.cjs → chunk-5V7DXZWT.cjs} +79 -76
  31. package/dist/chunk-5V7DXZWT.cjs.map +1 -0
  32. package/dist/{chunk-6CPCNQKV.js → chunk-67EXHO4T.js} +2 -2
  33. package/dist/{chunk-K7T25Y3A.cjs → chunk-6LCYO2HG.cjs} +10 -9
  34. package/dist/chunk-6LCYO2HG.cjs.map +1 -0
  35. package/dist/{chunk-ZNWIHUHZ.cjs → chunk-7KVXXHFX.cjs} +9 -3
  36. package/dist/chunk-7KVXXHFX.cjs.map +1 -0
  37. package/dist/{chunk-55J4LEKT.cjs → chunk-AHVDTWVM.cjs} +11 -8
  38. package/dist/chunk-AHVDTWVM.cjs.map +1 -0
  39. package/dist/{chunk-OAPOGYA5.cjs → chunk-AXPEJ5IG.cjs} +7 -4
  40. package/dist/chunk-AXPEJ5IG.cjs.map +1 -0
  41. package/dist/{chunk-GDQWSCJQ.js → chunk-BBU7QG7L.js} +4 -4
  42. package/dist/{chunk-T2KB3DJJ.js → chunk-BGBAZMFE.js} +9 -3
  43. package/dist/chunk-BGBAZMFE.js.map +1 -0
  44. package/dist/{chunk-EH42ND5Q.cjs → chunk-BIANFFJL.cjs} +5 -5
  45. package/dist/{chunk-EH42ND5Q.cjs.map → chunk-BIANFFJL.cjs.map} +1 -1
  46. package/dist/{chunk-O2AACVSF.js → chunk-BO4LTIJI.js} +3 -3
  47. package/dist/{chunk-G5N3C6AU.cjs → chunk-CBT3TTQR.cjs} +36 -36
  48. package/dist/{chunk-G5N3C6AU.cjs.map → chunk-CBT3TTQR.cjs.map} +1 -1
  49. package/dist/{chunk-JRLUZDKA.js → chunk-CEC3GO4R.js} +20 -7
  50. package/dist/chunk-CEC3GO4R.js.map +1 -0
  51. package/dist/{chunk-BNVQ34FD.js → chunk-CP335H4Q.js} +4 -4
  52. package/dist/{chunk-H6CWTMAH.js → chunk-DGXHR6FV.js} +5 -2
  53. package/dist/chunk-DGXHR6FV.js.map +1 -0
  54. package/dist/{chunk-OU7DCYIA.js → chunk-DMOZURHV.js} +2 -2
  55. package/dist/{chunk-L5W2XC6M.js → chunk-EWTMX4DK.js} +8 -8
  56. package/dist/{chunk-SXGCRHBZ.js → chunk-FDMYDIGI.js} +8 -6
  57. package/dist/chunk-FDMYDIGI.js.map +1 -0
  58. package/dist/{chunk-AOGNTG3W.cjs → chunk-FODRHCRP.cjs} +5 -4
  59. package/dist/chunk-FODRHCRP.cjs.map +1 -0
  60. package/dist/{chunk-E7FGY7BJ.js → chunk-FPLX5FIK.js} +4 -4
  61. package/dist/{chunk-NEYLNRVG.cjs → chunk-FXMRDNR6.cjs} +21 -16
  62. package/dist/chunk-FXMRDNR6.cjs.map +1 -0
  63. package/dist/{chunk-VXO2MYYH.cjs → chunk-G74DHVHV.cjs} +9 -9
  64. package/dist/{chunk-VXO2MYYH.cjs.map → chunk-G74DHVHV.cjs.map} +1 -1
  65. package/dist/{chunk-O3LG7B2J.cjs → chunk-GMDVW76A.cjs} +13 -5
  66. package/dist/chunk-GMDVW76A.cjs.map +1 -0
  67. package/dist/{chunk-NQ4L6PYW.js → chunk-GOF6A4M4.js} +2 -2
  68. package/dist/{chunk-NQ4L6PYW.js.map → chunk-GOF6A4M4.js.map} +1 -1
  69. package/dist/{chunk-TQGO5WK6.js → chunk-GPK2THIG.js} +7 -6
  70. package/dist/chunk-GPK2THIG.js.map +1 -0
  71. package/dist/{chunk-HYDNZXPU.js → chunk-H2RS6Z6Q.js} +41 -25
  72. package/dist/{chunk-HYDNZXPU.js.map → chunk-H2RS6Z6Q.js.map} +1 -1
  73. package/dist/{chunk-OJDYTCMO.cjs → chunk-H5D3ZFBM.cjs} +68 -61
  74. package/dist/chunk-H5D3ZFBM.cjs.map +1 -0
  75. package/dist/{chunk-MHZIBV2C.js → chunk-IXVM2XNS.js} +7 -6
  76. package/dist/chunk-IXVM2XNS.js.map +1 -0
  77. package/dist/{chunk-MCWTQT3M.cjs → chunk-JKBBHAIC.cjs} +21 -20
  78. package/dist/chunk-JKBBHAIC.cjs.map +1 -0
  79. package/dist/{chunk-QQIALSTX.cjs → chunk-KPMIIGHH.cjs} +27 -17
  80. package/dist/chunk-KPMIIGHH.cjs.map +1 -0
  81. package/dist/{chunk-QJRKXT54.cjs → chunk-KWDOOMHR.cjs} +7 -7
  82. package/dist/{chunk-QJRKXT54.cjs.map → chunk-KWDOOMHR.cjs.map} +1 -1
  83. package/dist/{chunk-HALVTKW7.js → chunk-LH5A2SIX.js} +78 -75
  84. package/dist/{chunk-HALVTKW7.js.map → chunk-LH5A2SIX.js.map} +1 -1
  85. package/dist/{chunk-27ZWUEPE.js → chunk-LIKSLFX6.js} +20 -9
  86. package/dist/chunk-LIKSLFX6.js.map +1 -0
  87. package/dist/{chunk-Z5U4NJTW.cjs → chunk-MLUHM3VG.cjs} +48 -19
  88. package/dist/chunk-MLUHM3VG.cjs.map +1 -0
  89. package/dist/{chunk-M7PF4FKQ.js → chunk-MP7LN5CW.js} +6 -3
  90. package/dist/chunk-MP7LN5CW.js.map +1 -0
  91. package/dist/{chunk-ACNTH2OQ.cjs → chunk-MW4YZVP5.cjs} +96 -97
  92. package/dist/chunk-MW4YZVP5.cjs.map +1 -0
  93. package/dist/{chunk-ZXJU3TQD.cjs → chunk-N5ZWQJTM.cjs} +11 -10
  94. package/dist/chunk-N5ZWQJTM.cjs.map +1 -0
  95. package/dist/{chunk-OGC44JFZ.cjs → chunk-N77VOYCK.cjs} +7 -7
  96. package/dist/{chunk-OGC44JFZ.cjs.map → chunk-N77VOYCK.cjs.map} +1 -1
  97. package/dist/{chunk-OAK7HFOJ.js → chunk-NACA72XI.js} +21 -16
  98. package/dist/chunk-NACA72XI.js.map +1 -0
  99. package/dist/{chunk-TEVZHN5I.cjs → chunk-NCZUQFKL.cjs} +28 -15
  100. package/dist/chunk-NCZUQFKL.cjs.map +1 -0
  101. package/dist/{chunk-NZO2I5AL.cjs → chunk-NF55JG2V.cjs} +7 -7
  102. package/dist/{chunk-NZO2I5AL.cjs.map → chunk-NF55JG2V.cjs.map} +1 -1
  103. package/dist/{chunk-ZWAFL2B3.cjs → chunk-O46UJUZM.cjs} +21 -19
  104. package/dist/chunk-O46UJUZM.cjs.map +1 -0
  105. package/dist/{chunk-25PSIDPC.js → chunk-OIXPYXR6.js} +79 -21
  106. package/dist/chunk-OIXPYXR6.js.map +1 -0
  107. package/dist/chunk-OWWPHXAF.cjs +88 -0
  108. package/dist/chunk-OWWPHXAF.cjs.map +1 -0
  109. package/dist/{chunk-65PC3YDT.cjs → chunk-OZQKWDFH.cjs} +7 -7
  110. package/dist/{chunk-65PC3YDT.cjs.map → chunk-OZQKWDFH.cjs.map} +1 -1
  111. package/dist/{chunk-P2JM22BF.cjs → chunk-P7J6WZTO.cjs} +3 -3
  112. package/dist/{chunk-P2JM22BF.cjs.map → chunk-P7J6WZTO.cjs.map} +1 -1
  113. package/dist/{chunk-KQJ3IAFT.js → chunk-PG2EII6U.js} +2 -2
  114. package/dist/{chunk-E6SE552P.cjs → chunk-RUDXHT76.cjs} +41 -25
  115. package/dist/chunk-RUDXHT76.cjs.map +1 -0
  116. package/dist/{chunk-S4S4LB63.js → chunk-SCLFJHN2.js} +11 -3
  117. package/dist/chunk-SCLFJHN2.js.map +1 -0
  118. package/dist/{chunk-WKDT2XFQ.js → chunk-SFRILDXY.js} +4 -4
  119. package/dist/{chunk-J5RMLZ4P.cjs → chunk-SKBKTNEQ.cjs} +80 -22
  120. package/dist/chunk-SKBKTNEQ.cjs.map +1 -0
  121. package/dist/{chunk-YW65NAKH.cjs → chunk-SKLMBE3Z.cjs} +7 -7
  122. package/dist/{chunk-YW65NAKH.cjs.map → chunk-SKLMBE3Z.cjs.map} +1 -1
  123. package/dist/{chunk-PY2376XI.js → chunk-SVCWSW2F.js} +8 -8
  124. package/dist/chunk-SVCWSW2F.js.map +1 -0
  125. package/dist/{chunk-2RXQMQYW.js → chunk-SXL4DMZ7.js} +27 -17
  126. package/dist/{chunk-2RXQMQYW.js.map → chunk-SXL4DMZ7.js.map} +1 -1
  127. package/dist/{chunk-7SVDYEKM.js → chunk-TLECMA3B.js} +5 -4
  128. package/dist/{chunk-7SVDYEKM.js.map → chunk-TLECMA3B.js.map} +1 -1
  129. package/dist/{chunk-FXZJL2AM.cjs → chunk-TWXZKUCG.cjs} +9 -5
  130. package/dist/chunk-TWXZKUCG.cjs.map +1 -0
  131. package/dist/{chunk-GG5YGESX.js → chunk-TYGVKSL6.js} +4 -3
  132. package/dist/chunk-TYGVKSL6.js.map +1 -0
  133. package/dist/{chunk-TTO7JXDB.cjs → chunk-TYSNOPMQ.cjs} +3 -3
  134. package/dist/{chunk-TTO7JXDB.cjs.map → chunk-TYSNOPMQ.cjs.map} +1 -1
  135. package/dist/{chunk-ZZSPQFMX.js → chunk-U233KQZX.js} +2 -1
  136. package/dist/{chunk-ZZSPQFMX.js.map → chunk-U233KQZX.js.map} +1 -1
  137. package/dist/{chunk-5HUZYY54.js → chunk-UDRAM6JU.js} +13 -5
  138. package/dist/chunk-UDRAM6JU.js.map +1 -0
  139. package/dist/{chunk-3EUTXQDB.js → chunk-UGTKZ7HP.js} +30 -23
  140. package/dist/chunk-UGTKZ7HP.js.map +1 -0
  141. package/dist/{chunk-FKXKBJUI.cjs → chunk-VHO6JPRR.cjs} +2 -1
  142. package/dist/chunk-VHO6JPRR.cjs.map +1 -0
  143. package/dist/chunk-VHSTB7GB.cjs +123 -0
  144. package/dist/chunk-VHSTB7GB.cjs.map +1 -0
  145. package/dist/{chunk-VPRUHE35.js → chunk-VRNCXYEP.js} +4 -4
  146. package/dist/{chunk-ITXDSQT2.js → chunk-WGCGSM5P.js} +96 -97
  147. package/dist/chunk-WGCGSM5P.js.map +1 -0
  148. package/dist/chunk-WT4WBHBR.js +123 -0
  149. package/dist/chunk-WT4WBHBR.js.map +1 -0
  150. package/dist/{chunk-L23WWO3D.js → chunk-X6UKU3C3.js} +2 -2
  151. package/dist/{chunk-5WH3JMR5.js → chunk-XK5USBHB.js} +7 -4
  152. package/dist/chunk-XK5USBHB.js.map +1 -0
  153. package/dist/{chunk-ND526PMG.cjs → chunk-XMXL6NVJ.cjs} +11 -11
  154. package/dist/{chunk-ND526PMG.cjs.map → chunk-XMXL6NVJ.cjs.map} +1 -1
  155. package/dist/{chunk-YV57RSPD.js → chunk-XO7WTE6O.js} +47 -18
  156. package/dist/chunk-XO7WTE6O.js.map +1 -0
  157. package/dist/{chunk-3CXULV4G.cjs → chunk-XRVRGRC3.cjs} +2 -2
  158. package/dist/{chunk-3CXULV4G.cjs.map → chunk-XRVRGRC3.cjs.map} +1 -1
  159. package/dist/{chunk-GPRJYPIG.js → chunk-Y7VSWZWM.js} +6 -4
  160. package/dist/chunk-Y7VSWZWM.js.map +1 -0
  161. package/dist/{chunk-2QEKSRVX.js → chunk-YIBPOLNN.js} +4 -4
  162. package/dist/{chunk-IJ4DXG7D.cjs → chunk-YJNQLH2L.cjs} +5 -2
  163. package/dist/chunk-YJNQLH2L.cjs.map +1 -0
  164. package/dist/{chunk-6CSUUQ5M.cjs → chunk-YUH56CJI.cjs} +6 -6
  165. package/dist/{chunk-6CSUUQ5M.cjs.map → chunk-YUH56CJI.cjs.map} +1 -1
  166. package/dist/color-picker/index.cjs +4 -4
  167. package/dist/color-picker/index.d.cts +8 -0
  168. package/dist/color-picker/index.d.ts +8 -0
  169. package/dist/color-picker/index.js +3 -3
  170. package/dist/combobox/index.cjs +6 -6
  171. package/dist/combobox/index.js +5 -5
  172. package/dist/command-palette/index.cjs +3 -2
  173. package/dist/command-palette/index.cjs.map +1 -1
  174. package/dist/command-palette/index.js +2 -1
  175. package/dist/context-menu/index.cjs +6 -6
  176. package/dist/context-menu/index.js +5 -5
  177. package/dist/conversation/index.cjs +8 -8
  178. package/dist/conversation/index.js +7 -7
  179. package/dist/data-grid/index.cjs +16 -16
  180. package/dist/data-grid/index.d.cts +2 -2
  181. package/dist/data-grid/index.d.ts +2 -2
  182. package/dist/data-grid/index.js +15 -15
  183. package/dist/date-picker/index.cjs +8 -8
  184. package/dist/date-picker/index.d.cts +1 -1
  185. package/dist/date-picker/index.d.ts +1 -1
  186. package/dist/date-picker/index.js +7 -7
  187. package/dist/drawer/index.cjs +5 -5
  188. package/dist/drawer/index.js +4 -4
  189. package/dist/dropdown/index.cjs +3 -3
  190. package/dist/dropdown/index.js +2 -2
  191. package/dist/file-upload/index.cjs +2 -2
  192. package/dist/file-upload/index.js +1 -1
  193. package/dist/header/index.cjs +6 -6
  194. package/dist/header/index.js +5 -5
  195. package/dist/index.cjs +42 -42
  196. package/dist/index.css +93 -38
  197. package/dist/index.d.cts +2 -2
  198. package/dist/index.d.ts +2 -2
  199. package/dist/index.js +41 -41
  200. package/dist/inline-edit/index.cjs +5 -5
  201. package/dist/inline-edit/index.js +4 -4
  202. package/dist/input/index.cjs +4 -4
  203. package/dist/input/index.d.cts +2 -2
  204. package/dist/input/index.d.ts +2 -2
  205. package/dist/input/index.js +3 -3
  206. package/dist/menu/index.cjs +5 -5
  207. package/dist/menu/index.js +4 -4
  208. package/dist/modal/index.cjs +5 -5
  209. package/dist/modal/index.js +4 -4
  210. package/dist/navigation/index.cjs +5 -5
  211. package/dist/navigation/index.js +4 -4
  212. package/dist/number-input/index.cjs +3 -3
  213. package/dist/number-input/index.js +2 -2
  214. package/dist/o-t-p-input/index.cjs +2 -2
  215. package/dist/o-t-p-input/index.js +1 -1
  216. package/dist/page-layout/index.cjs +12 -12
  217. package/dist/page-layout/index.js +11 -11
  218. package/dist/pagination/index.cjs +8 -8
  219. package/dist/pagination/index.js +7 -7
  220. package/dist/popover/index.cjs +3 -2
  221. package/dist/popover/index.cjs.map +1 -1
  222. package/dist/popover/index.js +2 -1
  223. package/dist/radio/index.cjs +2 -2
  224. package/dist/radio/index.js +1 -1
  225. package/dist/segmented-control/index.cjs +4 -4
  226. package/dist/segmented-control/index.js +3 -3
  227. package/dist/select/index.cjs +6 -6
  228. package/dist/select/index.d.cts +3 -3
  229. package/dist/select/index.d.ts +3 -3
  230. package/dist/select/index.js +5 -5
  231. package/dist/snackbar/index.cjs +5 -5
  232. package/dist/snackbar/index.d.cts +4 -0
  233. package/dist/snackbar/index.d.ts +4 -0
  234. package/dist/snackbar/index.js +4 -4
  235. package/dist/split-button/index.cjs +6 -6
  236. package/dist/split-button/index.js +5 -5
  237. package/dist/table/index.cjs +14 -14
  238. package/dist/table/index.js +13 -13
  239. package/dist/tabs/index.cjs +3 -3
  240. package/dist/tabs/index.js +2 -2
  241. package/dist/tag-input/index.cjs +6 -6
  242. package/dist/tag-input/index.js +5 -5
  243. package/dist/textarea/index.cjs +4 -4
  244. package/dist/textarea/index.js +3 -3
  245. package/dist/theme-editor/index.cjs +11 -11
  246. package/dist/theme-editor/index.js +10 -10
  247. package/dist/theme-provider/index.cjs +3 -3
  248. package/dist/theme-provider/index.js +2 -2
  249. package/dist/toolbar/index.cjs +8 -8
  250. package/dist/toolbar/index.js +7 -7
  251. package/dist/tooltip/index.cjs +3 -2
  252. package/dist/tooltip/index.cjs.map +1 -1
  253. package/dist/tooltip/index.js +2 -1
  254. package/dist/virtual-list/index.cjs +2 -2
  255. package/dist/virtual-list/index.js +1 -1
  256. package/package.json +7 -2
  257. package/dist/chunk-25PSIDPC.js.map +0 -1
  258. package/dist/chunk-27ZWUEPE.js.map +0 -1
  259. package/dist/chunk-3E7TKBQI.cjs.map +0 -1
  260. package/dist/chunk-3EPND5M2.cjs.map +0 -1
  261. package/dist/chunk-3EUTXQDB.js.map +0 -1
  262. package/dist/chunk-55J4LEKT.cjs.map +0 -1
  263. package/dist/chunk-5HUZYY54.js.map +0 -1
  264. package/dist/chunk-5WH3JMR5.js.map +0 -1
  265. package/dist/chunk-ACNTH2OQ.cjs.map +0 -1
  266. package/dist/chunk-AOGNTG3W.cjs.map +0 -1
  267. package/dist/chunk-CJGFRPAS.cjs.map +0 -1
  268. package/dist/chunk-CUJBNRJJ.cjs +0 -38
  269. package/dist/chunk-CUJBNRJJ.cjs.map +0 -1
  270. package/dist/chunk-E6SE552P.cjs.map +0 -1
  271. package/dist/chunk-EAJHEYZM.js +0 -38
  272. package/dist/chunk-EAJHEYZM.js.map +0 -1
  273. package/dist/chunk-FKXKBJUI.cjs.map +0 -1
  274. package/dist/chunk-FXZJL2AM.cjs.map +0 -1
  275. package/dist/chunk-GG5YGESX.js.map +0 -1
  276. package/dist/chunk-GPRJYPIG.js.map +0 -1
  277. package/dist/chunk-H6CWTMAH.js.map +0 -1
  278. package/dist/chunk-I5XR2V4A.cjs.map +0 -1
  279. package/dist/chunk-IJ4DXG7D.cjs.map +0 -1
  280. package/dist/chunk-ITXDSQT2.js.map +0 -1
  281. package/dist/chunk-J5RMLZ4P.cjs.map +0 -1
  282. package/dist/chunk-JRLUZDKA.js.map +0 -1
  283. package/dist/chunk-K7T25Y3A.cjs.map +0 -1
  284. package/dist/chunk-L5Q6UDY3.js +0 -69
  285. package/dist/chunk-L5Q6UDY3.js.map +0 -1
  286. package/dist/chunk-M7PF4FKQ.js.map +0 -1
  287. package/dist/chunk-MCWTQT3M.cjs.map +0 -1
  288. package/dist/chunk-MHZIBV2C.js.map +0 -1
  289. package/dist/chunk-NEYLNRVG.cjs.map +0 -1
  290. package/dist/chunk-O3LG7B2J.cjs.map +0 -1
  291. package/dist/chunk-OAK7HFOJ.js.map +0 -1
  292. package/dist/chunk-OAPOGYA5.cjs.map +0 -1
  293. package/dist/chunk-OJDYTCMO.cjs.map +0 -1
  294. package/dist/chunk-PY2376XI.js.map +0 -1
  295. package/dist/chunk-Q5KQVBQP.cjs.map +0 -1
  296. package/dist/chunk-QQIALSTX.cjs.map +0 -1
  297. package/dist/chunk-R4M6SNUU.cjs.map +0 -1
  298. package/dist/chunk-RYOQYYDO.js.map +0 -1
  299. package/dist/chunk-S4S4LB63.js.map +0 -1
  300. package/dist/chunk-SXGCRHBZ.js.map +0 -1
  301. package/dist/chunk-T2KB3DJJ.js.map +0 -1
  302. package/dist/chunk-TEVZHN5I.cjs.map +0 -1
  303. package/dist/chunk-TQGO5WK6.js.map +0 -1
  304. package/dist/chunk-WWYJNWJY.cjs +0 -69
  305. package/dist/chunk-WWYJNWJY.cjs.map +0 -1
  306. package/dist/chunk-YV57RSPD.js.map +0 -1
  307. package/dist/chunk-Z5U4NJTW.cjs.map +0 -1
  308. package/dist/chunk-ZNWIHUHZ.cjs.map +0 -1
  309. package/dist/chunk-ZWAFL2B3.cjs.map +0 -1
  310. package/dist/chunk-ZXJU3TQD.cjs.map +0 -1
  311. /package/dist/{chunk-6CPCNQKV.js.map → chunk-67EXHO4T.js.map} +0 -0
  312. /package/dist/{chunk-GDQWSCJQ.js.map → chunk-BBU7QG7L.js.map} +0 -0
  313. /package/dist/{chunk-O2AACVSF.js.map → chunk-BO4LTIJI.js.map} +0 -0
  314. /package/dist/{chunk-BNVQ34FD.js.map → chunk-CP335H4Q.js.map} +0 -0
  315. /package/dist/{chunk-OU7DCYIA.js.map → chunk-DMOZURHV.js.map} +0 -0
  316. /package/dist/{chunk-L5W2XC6M.js.map → chunk-EWTMX4DK.js.map} +0 -0
  317. /package/dist/{chunk-E7FGY7BJ.js.map → chunk-FPLX5FIK.js.map} +0 -0
  318. /package/dist/{chunk-KQJ3IAFT.js.map → chunk-PG2EII6U.js.map} +0 -0
  319. /package/dist/{chunk-WKDT2XFQ.js.map → chunk-SFRILDXY.js.map} +0 -0
  320. /package/dist/{chunk-VPRUHE35.js.map → chunk-VRNCXYEP.js.map} +0 -0
  321. /package/dist/{chunk-L23WWO3D.js.map → chunk-X6UKU3C3.js.map} +0 -0
  322. /package/dist/{chunk-2QEKSRVX.js.map → chunk-YIBPOLNN.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkTEVZHN5Icjs = require('./chunk-TEVZHN5I.cjs');
3
+ var _chunkNCZUQFKLcjs = require('./chunk-NCZUQFKL.cjs');
4
4
 
5
5
 
6
- var _chunkP2JM22BFcjs = require('./chunk-P2JM22BF.cjs');
6
+ var _chunkP7J6WZTOcjs = require('./chunk-P7J6WZTO.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
10
+ var _chunkVHSTB7GBcjs = require('./chunk-VHSTB7GB.cjs');
11
11
 
12
12
  // src/components/Select/Select.component.tsx
13
13
  var _react = require('react'); var _react2 = _interopRequireDefault(_react);
@@ -266,7 +266,7 @@ var Select = _react2.default.forwardRef(
266
266
  "aria-selected": isSelected,
267
267
  "aria-disabled": option.disabled,
268
268
  children: [
269
- option.icon && _chunkCUJBNRJJcjs.renderIcon.call(void 0, option.icon, "eidos-select-option-icon"),
269
+ option.icon && _chunkVHSTB7GBcjs.renderIcon.call(void 0, option.icon, "eidos-select-option-icon"),
270
270
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-select-option-label", children: option.label }),
271
271
  isSelected && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Check, { className: "eidos-select-option-check-icon" })
272
272
  ]
@@ -280,7 +280,7 @@ var Select = _react2.default.forwardRef(
280
280
  "div",
281
281
  {
282
282
  ref: triggerRef,
283
- className: `eidos-select-trigger ${fullWidth ? _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-select-trigger") : ""}`,
283
+ className: `eidos-select-trigger ${fullWidth ? _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-select-trigger") : ""}`,
284
284
  onKeyDown: handleKeyDown,
285
285
  tabIndex: disabled ? -1 : void 0,
286
286
  role: "combobox",
@@ -289,7 +289,7 @@ var Select = _react2.default.forwardRef(
289
289
  "aria-controls": `${id || "select"}-options`,
290
290
  "aria-activedescendant": focusedIndex >= 0 ? `${id || "select"}-option-${focusedIndex}` : void 0,
291
291
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
292
- _chunkTEVZHN5Icjs.Input,
292
+ _chunkNCZUQFKLcjs.Input,
293
293
  {
294
294
  ref: inputRef,
295
295
  value: selectedValues.size > 0 ? displayValue : "",
@@ -297,6 +297,7 @@ var Select = _react2.default.forwardRef(
297
297
  posIcon: selectedValues.size > 0 && clearable ? _lucidereact.X : void 0,
298
298
  posIconButton: selectedValues.size > 0 && clearable,
299
299
  onPosIconClick: selectedValues.size > 0 && clearable ? handleClear : void 0,
300
+ posIconLabel: "Clear selection",
300
301
  disabled,
301
302
  readOnly: true,
302
303
  isSelect: true,
@@ -313,9 +314,9 @@ var Select = _react2.default.forwardRef(
313
314
  "div",
314
315
  {
315
316
  ref,
316
- className: `${"eidos-select-container"} ${fullWidth ? _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-select-container") : ""} ${className}`,
317
+ className: `${"eidos-select-container"} ${fullWidth ? _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-select-container") : ""} ${className}`,
317
318
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
318
- _chunkP2JM22BFcjs.Dropdown,
319
+ _chunkP7J6WZTOcjs.Dropdown,
319
320
  {
320
321
  defaultOpen: autoOpen,
321
322
  trigger: triggerElement,
@@ -340,4 +341,4 @@ Select.displayName = "Select";
340
341
 
341
342
 
342
343
  exports.Select = Select;
343
- //# sourceMappingURL=chunk-K7T25Y3A.cjs.map
344
+ //# sourceMappingURL=chunk-6LCYO2HG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6LCYO2HG.cjs","../src/components/Select/Select.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6LCYO2HG.cjs","sourcesContent":[null,"import React, { useState, useCallback, useRef, useEffect, useMemo } from 'react';\nimport { X, Check } from 'lucide-react';\nimport { Input } from '../Input/Input.component';\nimport { Dropdown } from '../Dropdown/Dropdown.component';\nimport type { SelectProps, SelectOption } from './Select.types';\nimport { renderIcon, fullWidthModifier } from '../../utils';\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n options = [],\n value,\n defaultValue,\n onChange,\n className = '',\n multiple = false,\n placeholder = 'Select an option...',\n disabled = false,\n inputProps = {},\n name,\n id,\n required = false,\n fullWidth = false,\n minWidth,\n maxWidth,\n minHeight,\n maxHeight = '300px',\n autoWidth = true,\n clearable = true,\n autoOpen = false,\n dropdownProps = {},\n },\n ref,\n ) => {\n const isControlled = value !== undefined;\n\n // Lazy initializer: seed from defaultValue in uncontrolled mode.\n const [selectedValues, setSelectedValues] = useState<Set<string>>(() => {\n if (defaultValue !== undefined) {\n const vals = Array.isArray(defaultValue) ? defaultValue : [defaultValue];\n return new Set(vals.filter((v) => v !== ''));\n }\n return new Set();\n });\n const [menuKey, setMenuKey] = useState(0);\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const [isOpen, setIsOpen] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const optionRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n // Kept in sync every render so the mount-only callback ref below can\n // read the latest values without needing them in its dependency array\n // (see `handleOptionsMount`).\n const optionsRef = useRef(options);\n optionsRef.current = options;\n const selectedValuesRef = useRef(selectedValues);\n selectedValuesRef.current = selectedValues;\n\n useEffect(() => {\n if (value !== undefined) {\n const values = Array.isArray(value) ? value : [value];\n\n const validValues = values.filter((v) => v !== '');\n setSelectedValues(new Set(validValues));\n }\n }, [value]);\n\n useEffect(() => {\n setFocusedIndex(-1);\n }, [options]);\n\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n const handleOptionSelect = useCallback(\n (option: SelectOption) => {\n if (option.disabled) return;\n\n const newSelectedValues = new Set(selectedValues);\n\n if (multiple) {\n if (newSelectedValues.has(option.value)) {\n newSelectedValues.delete(option.value);\n } else {\n newSelectedValues.add(option.value);\n }\n } else {\n if (newSelectedValues.has(option.value)) {\n newSelectedValues.clear();\n } else {\n newSelectedValues.clear();\n newSelectedValues.add(option.value);\n }\n }\n\n // In uncontrolled mode, own the state directly.\n // In controlled mode, let the parent drive via value prop + useEffect sync.\n if (!isControlled) {\n setSelectedValues(newSelectedValues);\n }\n\n if (onChange) {\n const newValue = multiple\n ? Array.from(newSelectedValues)\n : Array.from(newSelectedValues)[0] || '';\n onChange(newValue);\n }\n\n if (!multiple) {\n setIsOpen(false);\n setMenuKey((prev) => prev + 1);\n }\n },\n [multiple, onChange, selectedValues, isControlled],\n );\n\n const handleClear = useCallback(\n (e?: React.MouseEvent) => {\n if (e) {\n e.stopPropagation();\n }\n if (!isControlled) {\n setSelectedValues(new Set());\n }\n\n setIsOpen(false);\n setMenuKey((prev) => prev + 1);\n if (onChange) {\n onChange(multiple ? [] : '');\n }\n },\n [multiple, onChange, isControlled],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev < options.length - 1 ? prev + 1 : 0;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(options.length - 1);\n } else {\n setFocusedIndex((prev) => {\n const nextIndex = prev > 0 ? prev - 1 : options.length - 1;\n\n setTimeout(() => {\n optionRefs.current[nextIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }, 0);\n return nextIndex;\n });\n }\n break;\n\n case 'Enter':\n case ' ':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n setFocusedIndex(0);\n } else if (focusedIndex >= 0 && focusedIndex < options.length) {\n const focusedOption = options[focusedIndex];\n handleOptionSelect(focusedOption);\n }\n break;\n\n case 'Escape':\n e.preventDefault();\n if (isOpen) {\n setIsOpen(false);\n setFocusedIndex(-1);\n setMenuKey((prev) => prev + 1);\n }\n break;\n\n case 'Home':\n e.preventDefault();\n if (isOpen) {\n setFocusedIndex(0);\n optionRefs.current[0]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n case 'End':\n e.preventDefault();\n if (isOpen) {\n const lastIndex = options.length - 1;\n setFocusedIndex(lastIndex);\n optionRefs.current[lastIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n break;\n\n default:\n if (isOpen && e.key.length === 1 && /[a-zA-Z0-9]/.test(e.key)) {\n const searchChar = e.key.toLowerCase();\n const foundIndex = options.findIndex(\n (option, index) =>\n index > focusedIndex && option.label.toLowerCase().startsWith(searchChar),\n );\n\n if (foundIndex !== -1) {\n setFocusedIndex(foundIndex);\n optionRefs.current[foundIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n } else {\n const foundFromStart = options.findIndex((option) =>\n option.label.toLowerCase().startsWith(searchChar),\n );\n if (foundFromStart !== -1) {\n setFocusedIndex(foundFromStart);\n optionRefs.current[foundFromStart]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n }\n break;\n }\n },\n [disabled, isOpen, options, focusedIndex, handleOptionSelect],\n );\n\n // Scrolls the first selected option into view. Attached as the options\n // list's own ref below with an empty dependency array, so its identity\n // never changes and React only invokes it on genuine DOM mount/unmount -\n // i.e. exactly when the dropdown opens/closes (Dropdown unmounts its\n // `content` entirely while closed), not on every re-render while open.\n const handleOptionsMount = useCallback((el: HTMLDivElement | null) => {\n if (!el) return;\n const idx = optionsRef.current.findIndex((option) =>\n selectedValuesRef.current.has(option.value),\n );\n if (idx === -1) return;\n optionRefs.current[idx]?.scrollIntoView({ block: 'nearest' });\n }, []);\n\n // Past this many selections the full comma-joined label list becomes\n // unreadable in the trigger, so we switch to a compact \"N selected\" label.\n const COMPACT_LABEL_THRESHOLD = 2;\n\n const displayValue = useMemo(() => {\n if (selectedValues.size === 0) return '';\n\n if (multiple && selectedValues.size > COMPACT_LABEL_THRESHOLD) {\n return `${selectedValues.size} selected`;\n }\n\n const selectedOptions = options.filter((option) => selectedValues.has(option.value));\n const text = selectedOptions.map((option) => option.label).join(', ');\n return text;\n }, [options, selectedValues, multiple]);\n\n const selectContent = useMemo(\n () => (\n <div className={'eidos-select-options'} ref={handleOptionsMount}>\n {options.map((option, index) => {\n const isSelected = selectedValues.has(option.value);\n const isFocused = index === focusedIndex;\n return (\n <div\n key={option.id}\n ref={(el) => {\n optionRefs.current[index] = el;\n }}\n className={`\n\t\t\t\t\t\t\t\t\t\t${'eidos-select-option'}\n\t\t\t\t\t\t\t\t\t\t${isSelected ? 'eidos-select-option--selected' : ''}\n\t\t\t\t\t\t\t\t\t\t${option.disabled ? 'eidos-select-option--disabled' : ''}\n\t\t\t\t\t\t\t\t\t\t${isFocused ? 'eidos-select-option--focused' : ''}\n\t\t\t\t\t\t\t\t\t`.trim()}\n onClick={() => handleOptionSelect(option)}\n onMouseEnter={() => setFocusedIndex(index)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={option.disabled}\n >\n {option.icon && renderIcon(option.icon, 'eidos-select-option-icon')}\n <span className={'eidos-select-option-label'}>{option.label}</span>\n {isSelected && <Check className={'eidos-select-option-check-icon'} />}\n </div>\n );\n })}\n </div>\n ),\n [options, selectedValues, focusedIndex, handleOptionSelect, handleOptionsMount],\n );\n\n const triggerElement = (\n <div\n ref={triggerRef}\n className={`eidos-select-trigger ${fullWidth ? fullWidthModifier('eidos-select-trigger') : ''}`}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : undefined}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={`${id || 'select'}-options`}\n aria-activedescendant={\n focusedIndex >= 0 ? `${id || 'select'}-option-${focusedIndex}` : undefined\n }\n >\n <Input\n ref={inputRef}\n value={selectedValues.size > 0 ? displayValue : ''}\n placeholder={selectedValues.size === 0 ? placeholder : ''}\n posIcon={selectedValues.size > 0 && clearable ? X : undefined}\n posIconButton={selectedValues.size > 0 && clearable}\n onPosIconClick={selectedValues.size > 0 && clearable ? handleClear : undefined}\n posIconLabel=\"Clear selection\"\n disabled={disabled}\n readOnly={true}\n isSelect={true}\n name={name}\n id={id}\n required={required}\n fullWidth={fullWidth}\n {...inputProps}\n />\n </div>\n );\n\n return (\n <div\n ref={ref}\n className={`${'eidos-select-container'} ${\n fullWidth ? fullWidthModifier('eidos-select-container') : ''\n } ${className}`}\n >\n <Dropdown\n key={menuKey}\n defaultOpen={autoOpen}\n trigger={triggerElement}\n content={\n <div id={`${id || 'select'}-options`} role=\"listbox\" aria-multiselectable={multiple}>\n {selectContent}\n </div>\n }\n minWidth={minWidth}\n maxWidth={maxWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n autoWidth={autoWidth}\n fullWidth={fullWidth}\n triggerRef={triggerRef as React.RefObject<HTMLElement | null>}\n {...dropdownProps}\n />\n </div>\n );\n },\n);\n\nSelect.displayName = 'Select';\n"]}
@@ -1,6 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkWWYJNWJYcjs = require('./chunk-WWYJNWJY.cjs');
3
+ var _chunkOWWPHXAFcjs = require('./chunk-OWWPHXAF.cjs');
4
+
5
+
6
+ var _chunkVHSTB7GBcjs = require('./chunk-VHSTB7GB.cjs');
4
7
 
5
8
  // src/components/Drawer/Drawer.component.tsx
6
9
  var _react = require('react');
@@ -21,6 +24,7 @@ var Drawer = ({
21
24
  }) => {
22
25
  const titleId = _react.useId.call(void 0, );
23
26
  const bodyId = _react.useId.call(void 0, );
27
+ const panelRef = _react.useRef.call(void 0, null);
24
28
  const TRANSITION_MS = 300;
25
29
  const [isMounted, setIsMounted] = _react.useState.call(void 0, isOpen);
26
30
  const [isVisible, setIsVisible] = _react.useState.call(void 0, isOpen);
@@ -69,6 +73,7 @@ var Drawer = ({
69
73
  },
70
74
  [closeOnBackdropClick, onClose]
71
75
  );
76
+ _chunkVHSTB7GBcjs.useDialogFocus.call(void 0, isOpen && isVisible, panelRef);
72
77
  if (!isMounted) return null;
73
78
  return _reactdom.createPortal.call(void 0,
74
79
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -85,6 +90,7 @@ var Drawer = ({
85
90
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
86
91
  "div",
87
92
  {
93
+ ref: panelRef,
88
94
  role: "dialog",
89
95
  "aria-modal": "true",
90
96
  "aria-labelledby": title ? titleId : void 0,
@@ -110,7 +116,7 @@ var Drawer = ({
110
116
  ] }),
111
117
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { id: bodyId, className: "eidos-drawer-body", children }),
112
118
  actions && actions.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-drawer-footer", children: actions.map((action) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
113
- _chunkWWYJNWJYcjs.Button,
119
+ _chunkOWWPHXAFcjs.Button,
114
120
  {
115
121
  variant: _nullishCoalesce(action.variant, () => ( "outlined")),
116
122
  color: action.color,
@@ -135,4 +141,4 @@ Drawer.displayName = "Drawer";
135
141
 
136
142
 
137
143
  exports.Drawer = Drawer;
138
- //# sourceMappingURL=chunk-ZNWIHUHZ.cjs.map
144
+ //# sourceMappingURL=chunk-7KVXXHFX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-7KVXXHFX.cjs","../src/components/Drawer/Drawer.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-7KVXXHFX.cjs","sourcesContent":[null,"import React, { useEffect, useCallback, useId, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport { Button } from '../Button';\nimport type { DrawerProps } from './Drawer.types';\nimport { useDialogFocus } from '../../utils';\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n placement = 'right',\n title,\n children,\n actions,\n size = 'md',\n closeOnBackdropClick = true,\n closeOnEscape = true,\n className = '',\n}) => {\n const titleId = useId();\n const bodyId = useId();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // ── Animation state ────────────────────────────────────────────────────────\n // isMounted: whether the portal DOM node exists at all.\n // isVisible: whether the '--open' CSS class is applied (drives the transition).\n //\n // On open: mount first → one rAF → apply --open (browser sees initial\n // closed position before transitioning, so the animation fires).\n // On close: remove --open (CSS transition plays) → after 300 ms unmount.\n // 300 ms matches the CSS `transition: 0.3s` in Drawer.scss.\n const TRANSITION_MS = 300;\n const [isMounted, setIsMounted] = useState(isOpen);\n const [isVisible, setIsVisible] = useState(isOpen);\n\n useEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n let timerId: ReturnType<typeof setTimeout>;\n\n if (isOpen) {\n setIsMounted(true);\n // Double rAF: React 18 automatic batching means setIsMounted(true) may\n // not produce a committed browser paint before the first rAF fires.\n // The second frame guarantees the panel is rendered in its off-screen\n // (closed) position before the CSS transition begins.\n raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setIsVisible(true));\n });\n } else {\n setIsVisible(false);\n timerId = setTimeout(() => setIsMounted(false), TRANSITION_MS);\n }\n\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n clearTimeout(timerId);\n };\n }, [isOpen]);\n\n // ── Escape key + scroll lock (tied to isOpen, not isMounted) ───────────────\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === 'Escape' && isOpen) {\n onClose();\n }\n },\n [closeOnEscape, isOpen, onClose],\n );\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n document.body.style.overflow = 'hidden';\n }\n return () => {\n document.removeEventListener('keydown', handleEscapeKey);\n document.body.style.overflow = '';\n };\n }, [isOpen, handleEscapeKey]);\n\n // ── Backdrop click ─────────────────────────────────────────────────────────\n const handleBackdropClick = useCallback(\n (event: React.MouseEvent) => {\n if (closeOnBackdropClick && event.target === event.currentTarget) {\n onClose();\n }\n },\n [closeOnBackdropClick, onClose],\n );\n\n // Keyed to `isVisible` rather than `isOpen` or `isMounted` - see the note\n // on `Modal`. The panel is translated off-screen until `--open` lands two\n // frames after mounting, and focusing something that is off-screen scrolls\n // the page to chase it.\n useDialogFocus(isOpen && isVisible, panelRef);\n\n if (!isMounted) return null;\n\n return createPortal(\n <div\n className={[\n 'eidos-drawer',\n `eidos-drawer--${placement}`,\n isVisible && 'eidos-drawer--open',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {/* Backdrop */}\n <div className=\"eidos-drawer-backdrop\" onClick={handleBackdropClick} aria-hidden=\"true\" />\n\n {/* Panel */}\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={bodyId}\n className={[\n 'eidos-drawer-panel',\n `eidos-drawer-panel--${size}`,\n `eidos-drawer-panel--${placement}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {/* Header */}\n <div className=\"eidos-drawer-header\">\n {title && (\n <h3 id={titleId} className=\"eidos-drawer-title\">\n {title}\n </h3>\n )}\n <button\n type=\"button\"\n className=\"eidos-drawer-close\"\n onClick={onClose}\n aria-label=\"Close drawer\"\n >\n <X aria-hidden=\"true\" />\n </button>\n </div>\n\n {/* Body */}\n <div id={bodyId} className=\"eidos-drawer-body\">\n {children}\n </div>\n\n {/* Footer - only rendered when actions are provided */}\n {actions && actions.length > 0 && (\n <div className=\"eidos-drawer-footer\">\n {actions.map((action) => (\n <Button\n key={action.id}\n variant={action.variant ?? 'outlined'}\n color={action.color}\n disabled={action.disabled}\n loading={action.loading}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>,\n document.body,\n );\n};\n\nDrawer.displayName = 'Drawer';\n"]}
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkZ5U4NJTWcjs = require('./chunk-Z5U4NJTW.cjs');
3
+ var _chunkMLUHM3VGcjs = require('./chunk-MLUHM3VG.cjs');
4
4
 
5
5
 
6
6
 
7
- var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
7
+ var _chunkVHSTB7GBcjs = require('./chunk-VHSTB7GB.cjs');
8
8
 
9
9
  // src/components/Textarea/Textarea.component.tsx
10
10
  var _react = require('react');
@@ -33,6 +33,7 @@ var Textarea = _react.forwardRef.call(void 0,
33
33
  }, ref) => {
34
34
  const generatedId = _react.useId.call(void 0, );
35
35
  const textareaId = id || `textarea-${generatedId}`;
36
+ const errorId = `${textareaId}-error`;
36
37
  const { defaultValue, ...restTextareaProps } = textareaProps;
37
38
  const isControlled = restTextareaProps.value !== void 0;
38
39
  const [localValue, setLocalValue] = _react.useState.call(void 0, defaultValue != null ? String(defaultValue) : "");
@@ -48,7 +49,7 @@ var Textarea = _react.forwardRef.call(void 0,
48
49
  };
49
50
  const containerClasses = [
50
51
  "eidos-textarea-container",
51
- fullWidth && _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-textarea-container"),
52
+ fullWidth && _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-textarea-container"),
52
53
  className
53
54
  ].filter(Boolean).join(" ");
54
55
  const wrapperClasses = [
@@ -56,7 +57,7 @@ var Textarea = _react.forwardRef.call(void 0,
56
57
  `eidos-textarea-wrapper--${variant}`,
57
58
  `eidos-textarea-wrapper--${color}`,
58
59
  `eidos-textarea-wrapper--${size}`,
59
- fullWidth && _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-textarea-wrapper"),
60
+ fullWidth && _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-textarea-wrapper"),
60
61
  loading && "eidos-textarea-wrapper--loading",
61
62
  isFocused && "eidos-textarea-wrapper--focused",
62
63
  error && "eidos-textarea-wrapper--error"
@@ -67,7 +68,7 @@ var Textarea = _react.forwardRef.call(void 0,
67
68
  `eidos-textarea--${color}`,
68
69
  `eidos-textarea--${size}`,
69
70
  `eidos-textarea--resize-${resize}`,
70
- fullWidth && _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-textarea"),
71
+ fullWidth && _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-textarea"),
71
72
  loading && "eidos-textarea--loading",
72
73
  error && "eidos-textarea--error"
73
74
  ].filter(Boolean).join(" ");
@@ -81,7 +82,7 @@ var Textarea = _react.forwardRef.call(void 0,
81
82
  label && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { htmlFor: textareaId, className: labelClasses, children: [
82
83
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-label-text", children: label }),
83
84
  isRequired && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-required-asterisk", children: "*" }),
84
- disclaimerIcon && (disclaimerContent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ5U4NJTWcjs.Tooltip, { message: disclaimerContent, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-disclaimer-icon", children: _chunkCUJBNRJJcjs.renderIcon.call(void 0, disclaimerIcon, "eidos-textarea-disclaimer-icon-svg") }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-disclaimer-icon", children: _chunkCUJBNRJJcjs.renderIcon.call(void 0, disclaimerIcon, "eidos-textarea-disclaimer-icon-svg") }))
85
+ disclaimerIcon && (disclaimerContent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMLUHM3VGcjs.Tooltip, { message: disclaimerContent, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-disclaimer-icon", children: _chunkVHSTB7GBcjs.renderIcon.call(void 0, disclaimerIcon, "eidos-textarea-disclaimer-icon-svg") }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-textarea-disclaimer-icon", children: _chunkVHSTB7GBcjs.renderIcon.call(void 0, disclaimerIcon, "eidos-textarea-disclaimer-icon-svg") }))
85
86
  ] }),
86
87
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: wrapperClasses, children: [
87
88
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -90,6 +91,8 @@ var Textarea = _react.forwardRef.call(void 0,
90
91
  ref,
91
92
  id: textareaId,
92
93
  className: textareaClasses,
94
+ "aria-invalid": error ? true : void 0,
95
+ "aria-describedby": error ? errorId : void 0,
93
96
  rows,
94
97
  maxLength,
95
98
  disabled: disabled || loading,
@@ -112,7 +115,7 @@ var Textarea = _react.forwardRef.call(void 0,
112
115
  maxLength
113
116
  ] })
114
117
  ] }),
115
- error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-textarea-error-message", children: [
118
+ error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { id: errorId, className: "eidos-textarea-error-message", children: [
116
119
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.CircleAlert, { className: "eidos-textarea-error-icon" }),
117
120
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: error })
118
121
  ] })
@@ -124,4 +127,4 @@ Textarea.displayName = "Textarea";
124
127
 
125
128
 
126
129
  exports.Textarea = Textarea;
127
- //# sourceMappingURL=chunk-55J4LEKT.cjs.map
130
+ //# sourceMappingURL=chunk-AHVDTWVM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-AHVDTWVM.cjs","../src/components/Textarea/Textarea.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACRA,8BAAmD;AACnD,2CAA4B;AA8GlB,+CAAA;AAzGH,IAAM,SAAA,EAAW,+BAAA;AAAA,EACtB,CACE;AAAA,IACE,QAAA,EAAU,QAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW,KAAA;AAAA,IACX,QAAA,EAAU,KAAA;AAAA,IACV,UAAA,EAAY,EAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,CAAA;AAAA,IACP,OAAA,EAAS,UAAA;AAAA,IACT,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAG;AAAA,EACL,CAAA,EACA,GAAA,EAAA,GACG;AACH,IAAA,MAAM,YAAA,EAAc,0BAAA,CAAM;AAC1B,IAAA,MAAM,WAAA,EAAa,GAAA,GAAM,CAAA,SAAA,EAAY,WAAW,CAAA,CAAA;AAKnB,IAAA;AAKkB,IAAA;AAGE,IAAA;AACJ,IAAA;AACG,IAAA;AAEZ,IAAA;AAGS,IAAA;AAGvB,IAAA;AAE8C,IAAA;AAC/C,MAAA;AACW,QAAA;AAC9B,MAAA;AAC8B,sBAAA;AAChC,IAAA;AAIyB,IAAA;AACvB,MAAA;AAC+B,MAAA;AAC/B,MAAA;AAGS,IAAA;AAEY,IAAA;AACrB,MAAA;AACkC,MAAA;AACF,MAAA;AACD,MAAA;AACA,MAAA;AACpB,MAAA;AACE,MAAA;AACJ,MAAA;AAGA,IAAA;AAEa,IAAA;AACtB,MAAA;AAC0B,MAAA;AACF,MAAA;AACD,MAAA;AACS,MAAA;AACe,MAAA;AACpC,MAAA;AACF,MAAA;AAGA,IAAA;AAEU,IAAA;AACnB,MAAA;AACoB,MAAA;AACF,MAAA;AACT,MAAA;AAGA,IAAA;AAGO,IAAA;AAEL,MAAA;AACW,wBAAA;AACK,QAAA;AAGjB,QAAA;AAUN,MAAA;AAGc,sBAAA;AACd,wBAAA;AAAC,UAAA;AAAA,UAAA;AACC,YAAA;AACI,YAAA;AACO,YAAA;AACkB,YAAA;AACO,YAAA;AACpC,YAAA;AACA,YAAA;AACsB,YAAA;AAClB,YAAA;AACG,YAAA;AACS,YAAA;AACG,cAAA;AACY,8BAAA;AAC/B,YAAA;AACe,YAAA;AACK,cAAA;AACU,8BAAA;AAC9B,YAAA;AACU,YAAA;AAAA,UAAA;AACZ,QAAA;AAGE,QAAA;AAC8B,UAAA;AAAO,UAAA;AAAE,UAAA;AACvC,QAAA;AAEJ,MAAA;AAGW,MAAA;AACM,wBAAA;AACN,wBAAA;AACT,MAAA;AAEJ,IAAA;AAEJ,EAAA;AACF;AAEuB;AD7C8B;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-AHVDTWVM.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useId } from 'react';\nimport { CircleAlert } from 'lucide-react';\nimport { renderIcon, fullWidthModifier } from '../../utils';\nimport type { TextareaProps } from './Textarea.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n className = '',\n fullWidth = false,\n label,\n error,\n disclaimerIcon,\n disclaimerContent,\n required,\n rows = 4,\n resize = 'vertical',\n showCount = false,\n maxLength,\n id,\n ...textareaProps\n },\n ref,\n ) => {\n const generatedId = useId();\n const textareaId = id || `textarea-${generatedId}`;\n // Associates the visible error with the control. Without it the message\n // is just a red line of text sitting near the field - obvious to look\n // at, absent from the accessibility tree (SC 3.3.1). See the fuller\n // note in `Input`.\n const errorId = `${textareaId}-error`;\n\n // Extract defaultValue so it never reaches the native <textarea> alongside `value`.\n // Same reasoning as Input: we always set value={currentValue}, so having defaultValue\n // in the spread as well triggers React's controlled/uncontrolled warning.\n const { defaultValue, ...restTextareaProps } = textareaProps;\n\n // Determine if using controlled or uncontrolled mode\n const isControlled = restTextareaProps.value !== undefined;\n const [localValue, setLocalValue] = useState(defaultValue != null ? String(defaultValue) : '');\n const [isFocused, setIsFocused] = useState(false);\n\n const currentValue = isControlled ? restTextareaProps.value : localValue;\n\n // Label floats when the field has content (same logic as Input)\n const shouldFloatLabel = Boolean(currentValue) || Boolean(defaultValue);\n\n const isRequired =\n required || Boolean('required' in restTextareaProps && restTextareaProps.required);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setLocalValue(e.target.value);\n }\n restTextareaProps.onChange?.(e);\n };\n\n // ── Class lists ──────────────────────────────────────────────────────────\n\n const containerClasses = [\n 'eidos-textarea-container',\n fullWidth && fullWidthModifier('eidos-textarea-container'),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperClasses = [\n 'eidos-textarea-wrapper',\n `eidos-textarea-wrapper--${variant}`,\n `eidos-textarea-wrapper--${color}`,\n `eidos-textarea-wrapper--${size}`,\n fullWidth && fullWidthModifier('eidos-textarea-wrapper'),\n loading && 'eidos-textarea-wrapper--loading',\n isFocused && 'eidos-textarea-wrapper--focused',\n error && 'eidos-textarea-wrapper--error',\n ]\n .filter(Boolean)\n .join(' ');\n\n const textareaClasses = [\n 'eidos-textarea',\n `eidos-textarea--${variant}`,\n `eidos-textarea--${color}`,\n `eidos-textarea--${size}`,\n `eidos-textarea--resize-${resize}`,\n fullWidth && fullWidthModifier('eidos-textarea'),\n loading && 'eidos-textarea--loading',\n error && 'eidos-textarea--error',\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClasses = [\n 'eidos-textarea-label',\n shouldFloatLabel && 'eidos-textarea-label--floating',\n disclaimerIcon && 'eidos-textarea-label--with-icon',\n error && 'eidos-textarea-label--error',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={containerClasses}>\n {label && (\n <label htmlFor={textareaId} className={labelClasses}>\n <span className=\"eidos-textarea-label-text\">{label}</span>\n {isRequired && <span className=\"eidos-textarea-required-asterisk\">*</span>}\n {disclaimerIcon &&\n (disclaimerContent ? (\n <Tooltip message={disclaimerContent}>\n <span className=\"eidos-textarea-disclaimer-icon\">\n {renderIcon(disclaimerIcon, 'eidos-textarea-disclaimer-icon-svg')}\n </span>\n </Tooltip>\n ) : (\n <span className=\"eidos-textarea-disclaimer-icon\">\n {renderIcon(disclaimerIcon, 'eidos-textarea-disclaimer-icon-svg')}\n </span>\n ))}\n </label>\n )}\n\n <div className={wrapperClasses}>\n <textarea\n ref={ref}\n id={textareaId}\n className={textareaClasses}\n aria-invalid={error ? true : undefined}\n aria-describedby={error ? errorId : undefined}\n rows={rows}\n maxLength={maxLength}\n disabled={disabled || loading}\n {...restTextareaProps}\n value={currentValue}\n onFocus={(e) => {\n setIsFocused(true);\n restTextareaProps.onFocus?.(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n restTextareaProps.onBlur?.(e);\n }}\n onChange={handleChange}\n />\n\n {showCount && maxLength && (\n <span className=\"eidos-textarea-count\">\n {String(currentValue ?? '').length}/{maxLength}\n </span>\n )}\n </div>\n\n {error && (\n <div id={errorId} className=\"eidos-textarea-error-message\">\n <CircleAlert className=\"eidos-textarea-error-icon\" />\n <span>{error}</span>\n </div>\n )}\n </div>\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
3
+ var _chunkVHSTB7GBcjs = require('./chunk-VHSTB7GB.cjs');
4
4
 
5
5
  // src/components/NumberInput/NumberInput.component.tsx
6
6
  var _react = require('react');
@@ -31,6 +31,7 @@ var NumberInput = _react.forwardRef.call(void 0,
31
31
  }, ref) => {
32
32
  const generatedId = _react.useId.call(void 0, );
33
33
  const inputId = id || `number-input-${generatedId}`;
34
+ const errorId = `${inputId}-error`;
34
35
  const isControlled = value !== void 0;
35
36
  const [localValue, setLocalValue] = _react.useState.call(void 0, defaultValue);
36
37
  const [inputText, setInputText] = _react.useState.call(void 0, defaultValue.toFixed(precision));
@@ -99,7 +100,7 @@ var NumberInput = _react.forwardRef.call(void 0,
99
100
  const rootClasses = [
100
101
  "eidos-number-input",
101
102
  `eidos-number-input--${size}`,
102
- fullWidth && _chunkCUJBNRJJcjs.fullWidthModifier.call(void 0, "eidos-number-input"),
103
+ fullWidth && _chunkVHSTB7GBcjs.fullWidthModifier.call(void 0, "eidos-number-input"),
103
104
  error && "eidos-number-input--error",
104
105
  className
105
106
  ].filter(Boolean).join(" ");
@@ -150,6 +151,8 @@ var NumberInput = _react.forwardRef.call(void 0,
150
151
  readOnly,
151
152
  inputMode: "decimal",
152
153
  role: "spinbutton",
154
+ "aria-invalid": error ? true : void 0,
155
+ "aria-describedby": error && errorMessage ? errorId : void 0,
153
156
  "aria-valuemin": min,
154
157
  "aria-valuemax": max,
155
158
  "aria-valuenow": currentValue,
@@ -191,7 +194,7 @@ var NumberInput = _react.forwardRef.call(void 0,
191
194
  }
192
195
  ),
193
196
  helperText && !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-number-input-helper", children: helperText }),
194
- error && errorMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "eidos-number-input-error", role: "alert", children: errorMessage })
197
+ error && errorMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: errorId, className: "eidos-number-input-error", role: "alert", children: errorMessage })
195
198
  ] });
196
199
  }
197
200
  );
@@ -200,4 +203,4 @@ NumberInput.displayName = "NumberInput";
200
203
 
201
204
 
202
205
  exports.NumberInput = NumberInput;
203
- //# sourceMappingURL=chunk-OAPOGYA5.cjs.map
206
+ //# sourceMappingURL=chunk-AXPEJ5IG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-AXPEJ5IG.cjs","../src/components/NumberInput/NumberInput.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-AXPEJ5IG.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useEffect, useId } from 'react';\nimport { Minus, Plus } from 'lucide-react';\nimport { fullWidthModifier } from '../../utils';\nimport type { NumberInputProps } from './NumberInput.types';\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue = 0,\n onChange,\n min,\n max,\n step = 1,\n precision = 0,\n placeholder,\n disabled = false,\n readOnly = false,\n label,\n helperText,\n error = false,\n errorMessage,\n size = 'md',\n fullWidth = false,\n allowTyping = true,\n className = '',\n id,\n name,\n },\n ref,\n ) => {\n const generatedId = useId();\n const inputId = id || `number-input-${generatedId}`;\n // Associates the visible error with the control. Without it the message\n // is just a red line of text sitting near the field - obvious to look\n // at, absent from the accessibility tree (SC 3.3.1). See the fuller\n // note in `Input`.\n const errorId = `${inputId}-error`;\n\n // Controlled / uncontrolled bridge\n const isControlled = value !== undefined;\n const [localValue, setLocalValue] = useState<number>(defaultValue);\n\n // Intermediate text while the user is actively typing\n const [inputText, setInputText] = useState<string>(defaultValue.toFixed(precision));\n const [isFocused, setIsFocused] = useState(false);\n\n const currentValue = isControlled ? value! : localValue;\n\n // When min/max props change (e.g. via Storybook controls), clamp the\n // uncontrolled localValue so the display never shows an out-of-range value.\n useEffect(() => {\n if (isControlled) return;\n setLocalValue((prev) => {\n let result = prev;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return parseFloat(result.toFixed(precision));\n });\n }, [min, max, precision, isControlled]);\n\n // Clamp to [min, max] and apply precision rounding\n const clampValue = (raw: number): number => {\n let result = raw;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n return parseFloat(result.toFixed(precision));\n };\n\n const commitValue = (newVal: number) => {\n const clamped = clampValue(newVal);\n if (!isControlled) setLocalValue(clamped);\n onChange?.(clamped);\n };\n\n // ── Stepper buttons ────────────────────────────────────────────────────\n const handleDecrement = () => {\n if (disabled || readOnly) return;\n commitValue(currentValue - step);\n };\n\n const handleIncrement = () => {\n if (disabled || readOnly) return;\n commitValue(currentValue + step);\n };\n\n // ── Typing mode handlers ───────────────────────────────────────────────\n const handleTextFocus = () => {\n setInputText(currentValue.toFixed(precision));\n setIsFocused(true);\n };\n\n const handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputText(e.target.value);\n };\n\n const handleTextBlur = () => {\n setIsFocused(false);\n const parsed = parseFloat(inputText);\n if (!isNaN(parsed)) {\n const clamped = clampValue(parsed);\n if (!isControlled) setLocalValue(clamped);\n onChange?.(clamped);\n setInputText(clamped.toFixed(precision));\n } else {\n // Revert to the last known-good value\n setInputText(currentValue.toFixed(precision));\n }\n };\n\n // ArrowUp / ArrowDown keyboard support for both display modes\n const handleDisplayKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n handleIncrement();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n handleDecrement();\n }\n };\n\n // ── Display value ──────────────────────────────────────────────────────\n // Show intermediate inputText while focused in typing mode;\n // otherwise always derive from the real (controlled/uncontrolled) value.\n const formattedValue = currentValue.toFixed(precision);\n const displayedText = allowTyping && isFocused ? inputText : formattedValue;\n\n // ── Disabled states for buttons ────────────────────────────────────────\n const isDecrementDisabled = disabled || readOnly || (min !== undefined && currentValue <= min);\n const isIncrementDisabled = disabled || readOnly || (max !== undefined && currentValue >= max);\n\n // ── CSS classes ────────────────────────────────────────────────────────\n const rootClasses = [\n 'eidos-number-input',\n `eidos-number-input--${size}`,\n fullWidth && fullWidthModifier('eidos-number-input'),\n error && 'eidos-number-input--error',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const controlClasses = [\n 'eidos-number-input-control',\n disabled && 'eidos-number-input-control--disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClasses}>\n {label && (\n <label htmlFor={allowTyping ? inputId : undefined} className=\"eidos-number-input-label\">\n {label}\n </label>\n )}\n\n <div\n className={controlClasses}\n role={allowTyping ? undefined : 'spinbutton'}\n aria-valuemin={allowTyping ? undefined : min}\n aria-valuemax={allowTyping ? undefined : max}\n aria-valuenow={allowTyping ? undefined : currentValue}\n aria-label={allowTyping ? undefined : (label ?? 'Number input')}\n aria-disabled={disabled || undefined}\n tabIndex={!allowTyping && !disabled ? 0 : undefined}\n onKeyDown={!allowTyping ? handleDisplayKeyDown : undefined}\n >\n <button\n type=\"button\"\n className=\"eidos-number-input-btn\"\n onClick={handleDecrement}\n disabled={isDecrementDisabled}\n aria-label=\"Decrease\"\n >\n <Minus />\n </button>\n\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\n\n {allowTyping ? (\n <input\n id={inputId}\n type=\"text\"\n className=\"eidos-number-input-display\"\n value={displayedText}\n onChange={handleTextChange}\n onFocus={handleTextFocus}\n onBlur={handleTextBlur}\n onKeyDown={handleDisplayKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n inputMode=\"decimal\"\n role=\"spinbutton\"\n aria-invalid={error ? true : undefined}\n aria-describedby={error && errorMessage ? errorId : undefined}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n aria-label={label ?? 'Number input'}\n />\n ) : (\n <span className=\"eidos-number-input-display\" aria-hidden=\"true\">\n {placeholder && formattedValue === (0).toFixed(precision) && !isFocused\n ? placeholder\n : formattedValue}\n </span>\n )}\n\n <div className=\"eidos-number-input-divider\" aria-hidden=\"true\" />\n\n <button\n type=\"button\"\n className=\"eidos-number-input-btn\"\n onClick={handleIncrement}\n disabled={isIncrementDisabled}\n aria-label=\"Increase\"\n >\n <Plus />\n </button>\n </div>\n\n {/* Hidden native <input type=\"number\"> for form integration */}\n <input\n ref={ref}\n type=\"number\"\n name={name}\n value={currentValue}\n onChange={() => {}}\n className=\"eidos-number-input-hidden\"\n tabIndex={-1}\n aria-hidden=\"true\"\n disabled={disabled}\n readOnly={readOnly}\n min={min}\n max={max}\n step={step}\n />\n\n {helperText && !error && <span className=\"eidos-number-input-helper\">{helperText}</span>}\n\n {error && errorMessage && (\n <span id={errorId} className=\"eidos-number-input-error\" role=\"alert\">\n {errorMessage}\n </span>\n )}\n </div>\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n"]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Toolbar
3
- } from "./chunk-VPRUHE35.js";
3
+ } from "./chunk-VRNCXYEP.js";
4
4
  import {
5
5
  Header
6
- } from "./chunk-WKDT2XFQ.js";
6
+ } from "./chunk-SFRILDXY.js";
7
7
  import {
8
8
  Navigation
9
- } from "./chunk-2QEKSRVX.js";
9
+ } from "./chunk-YIBPOLNN.js";
10
10
  import {
11
11
  Footer
12
12
  } from "./chunk-W2F6WDUX.js";
@@ -56,4 +56,4 @@ var PageLayout = ({
56
56
  export {
57
57
  PageLayout
58
58
  };
59
- //# sourceMappingURL=chunk-GDQWSCJQ.js.map
59
+ //# sourceMappingURL=chunk-BBU7QG7L.js.map
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  Button
3
- } from "./chunk-L5Q6UDY3.js";
3
+ } from "./chunk-44T4HMFU.js";
4
+ import {
5
+ useDialogFocus
6
+ } from "./chunk-WT4WBHBR.js";
4
7
 
5
8
  // src/components/Drawer/Drawer.component.tsx
6
- import { useEffect, useCallback, useId, useState } from "react";
9
+ import { useEffect, useCallback, useId, useRef, useState } from "react";
7
10
  import { createPortal } from "react-dom";
8
11
  import { X } from "lucide-react";
9
12
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -21,6 +24,7 @@ var Drawer = ({
21
24
  }) => {
22
25
  const titleId = useId();
23
26
  const bodyId = useId();
27
+ const panelRef = useRef(null);
24
28
  const TRANSITION_MS = 300;
25
29
  const [isMounted, setIsMounted] = useState(isOpen);
26
30
  const [isVisible, setIsVisible] = useState(isOpen);
@@ -69,6 +73,7 @@ var Drawer = ({
69
73
  },
70
74
  [closeOnBackdropClick, onClose]
71
75
  );
76
+ useDialogFocus(isOpen && isVisible, panelRef);
72
77
  if (!isMounted) return null;
73
78
  return createPortal(
74
79
  /* @__PURE__ */ jsxs(
@@ -85,6 +90,7 @@ var Drawer = ({
85
90
  /* @__PURE__ */ jsxs(
86
91
  "div",
87
92
  {
93
+ ref: panelRef,
88
94
  role: "dialog",
89
95
  "aria-modal": "true",
90
96
  "aria-labelledby": title ? titleId : void 0,
@@ -135,4 +141,4 @@ Drawer.displayName = "Drawer";
135
141
  export {
136
142
  Drawer
137
143
  };
138
- //# sourceMappingURL=chunk-T2KB3DJJ.js.map
144
+ //# sourceMappingURL=chunk-BGBAZMFE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Drawer/Drawer.component.tsx"],"sourcesContent":["import React, { useEffect, useCallback, useId, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport { Button } from '../Button';\nimport type { DrawerProps } from './Drawer.types';\nimport { useDialogFocus } from '../../utils';\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n placement = 'right',\n title,\n children,\n actions,\n size = 'md',\n closeOnBackdropClick = true,\n closeOnEscape = true,\n className = '',\n}) => {\n const titleId = useId();\n const bodyId = useId();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // ── Animation state ────────────────────────────────────────────────────────\n // isMounted: whether the portal DOM node exists at all.\n // isVisible: whether the '--open' CSS class is applied (drives the transition).\n //\n // On open: mount first → one rAF → apply --open (browser sees initial\n // closed position before transitioning, so the animation fires).\n // On close: remove --open (CSS transition plays) → after 300 ms unmount.\n // 300 ms matches the CSS `transition: 0.3s` in Drawer.scss.\n const TRANSITION_MS = 300;\n const [isMounted, setIsMounted] = useState(isOpen);\n const [isVisible, setIsVisible] = useState(isOpen);\n\n useEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n let timerId: ReturnType<typeof setTimeout>;\n\n if (isOpen) {\n setIsMounted(true);\n // Double rAF: React 18 automatic batching means setIsMounted(true) may\n // not produce a committed browser paint before the first rAF fires.\n // The second frame guarantees the panel is rendered in its off-screen\n // (closed) position before the CSS transition begins.\n raf1 = requestAnimationFrame(() => {\n raf2 = requestAnimationFrame(() => setIsVisible(true));\n });\n } else {\n setIsVisible(false);\n timerId = setTimeout(() => setIsMounted(false), TRANSITION_MS);\n }\n\n return () => {\n cancelAnimationFrame(raf1);\n cancelAnimationFrame(raf2);\n clearTimeout(timerId);\n };\n }, [isOpen]);\n\n // ── Escape key + scroll lock (tied to isOpen, not isMounted) ───────────────\n const handleEscapeKey = useCallback(\n (event: KeyboardEvent) => {\n if (closeOnEscape && event.key === 'Escape' && isOpen) {\n onClose();\n }\n },\n [closeOnEscape, isOpen, onClose],\n );\n\n useEffect(() => {\n if (isOpen) {\n document.addEventListener('keydown', handleEscapeKey);\n document.body.style.overflow = 'hidden';\n }\n return () => {\n document.removeEventListener('keydown', handleEscapeKey);\n document.body.style.overflow = '';\n };\n }, [isOpen, handleEscapeKey]);\n\n // ── Backdrop click ─────────────────────────────────────────────────────────\n const handleBackdropClick = useCallback(\n (event: React.MouseEvent) => {\n if (closeOnBackdropClick && event.target === event.currentTarget) {\n onClose();\n }\n },\n [closeOnBackdropClick, onClose],\n );\n\n // Keyed to `isVisible` rather than `isOpen` or `isMounted` - see the note\n // on `Modal`. The panel is translated off-screen until `--open` lands two\n // frames after mounting, and focusing something that is off-screen scrolls\n // the page to chase it.\n useDialogFocus(isOpen && isVisible, panelRef);\n\n if (!isMounted) return null;\n\n return createPortal(\n <div\n className={[\n 'eidos-drawer',\n `eidos-drawer--${placement}`,\n isVisible && 'eidos-drawer--open',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {/* Backdrop */}\n <div className=\"eidos-drawer-backdrop\" onClick={handleBackdropClick} aria-hidden=\"true\" />\n\n {/* Panel */}\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n aria-describedby={bodyId}\n className={[\n 'eidos-drawer-panel',\n `eidos-drawer-panel--${size}`,\n `eidos-drawer-panel--${placement}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {/* Header */}\n <div className=\"eidos-drawer-header\">\n {title && (\n <h3 id={titleId} className=\"eidos-drawer-title\">\n {title}\n </h3>\n )}\n <button\n type=\"button\"\n className=\"eidos-drawer-close\"\n onClick={onClose}\n aria-label=\"Close drawer\"\n >\n <X aria-hidden=\"true\" />\n </button>\n </div>\n\n {/* Body */}\n <div id={bodyId} className=\"eidos-drawer-body\">\n {children}\n </div>\n\n {/* Footer - only rendered when actions are provided */}\n {actions && actions.length > 0 && (\n <div className=\"eidos-drawer-footer\">\n {actions.map((action) => (\n <Button\n key={action.id}\n variant={action.variant ?? 'outlined'}\n color={action.color}\n disabled={action.disabled}\n loading={action.loading}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>,\n document.body,\n );\n};\n\nDrawer.displayName = 'Drawer';\n"],"mappings":";;;;;;;;AAAA,SAAgB,WAAW,aAAa,OAAO,QAAQ,gBAAgB;AACvE,SAAS,oBAAoB;AAC7B,SAAS,SAAS;AA8GZ,cAkBE,YAlBF;AAzGC,IAAM,SAAgC,CAAC;AAAA,EAC5C;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,YAAY;AACd,MAAM;AACJ,QAAM,UAAU,MAAM;AACtB,QAAM,SAAS,MAAM;AACrB,QAAM,WAAW,OAAuB,IAAI;AAU5C,QAAM,gBAAgB;AACtB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,MAAM;AACjD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,MAAM;AAEjD,YAAU,MAAM;AACd,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI;AAEJ,QAAI,QAAQ;AACV,mBAAa,IAAI;AAKjB,aAAO,sBAAsB,MAAM;AACjC,eAAO,sBAAsB,MAAM,aAAa,IAAI,CAAC;AAAA,MACvD,CAAC;AAAA,IACH,OAAO;AACL,mBAAa,KAAK;AAClB,gBAAU,WAAW,MAAM,aAAa,KAAK,GAAG,aAAa;AAAA,IAC/D;AAEA,WAAO,MAAM;AACX,2BAAqB,IAAI;AACzB,2BAAqB,IAAI;AACzB,mBAAa,OAAO;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAGX,QAAM,kBAAkB;AAAA,IACtB,CAAC,UAAyB;AACxB,UAAI,iBAAiB,MAAM,QAAQ,YAAY,QAAQ;AACrD,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,CAAC,eAAe,QAAQ,OAAO;AAAA,EACjC;AAEA,YAAU,MAAM;AACd,QAAI,QAAQ;AACV,eAAS,iBAAiB,WAAW,eAAe;AACpD,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AACA,WAAO,MAAM;AACX,eAAS,oBAAoB,WAAW,eAAe;AACvD,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAAA,EACF,GAAG,CAAC,QAAQ,eAAe,CAAC;AAG5B,QAAM,sBAAsB;AAAA,IAC1B,CAAC,UAA4B;AAC3B,UAAI,wBAAwB,MAAM,WAAW,MAAM,eAAe;AAChE,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA,CAAC,sBAAsB,OAAO;AAAA,EAChC;AAMA,iBAAe,UAAU,WAAW,QAAQ;AAE5C,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO;AAAA,IACL;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,iBAAiB,SAAS;AAAA,UAC1B,aAAa;AAAA,UACb;AAAA,QACF,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAGX;AAAA,8BAAC,SAAI,WAAU,yBAAwB,SAAS,qBAAqB,eAAY,QAAO;AAAA,UAGxF;AAAA,YAAC;AAAA;AAAA,cACC,KAAK;AAAA,cACL,MAAK;AAAA,cACL,cAAW;AAAA,cACX,mBAAiB,QAAQ,UAAU;AAAA,cACnC,oBAAkB;AAAA,cAClB,WAAW;AAAA,gBACT;AAAA,gBACA,uBAAuB,IAAI;AAAA,gBAC3B,uBAAuB,SAAS;AAAA,cAClC,EACG,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,cAGX;AAAA,qCAAC,SAAI,WAAU,uBACZ;AAAA,2BACC,oBAAC,QAAG,IAAI,SAAS,WAAU,sBACxB,iBACH;AAAA,kBAEF;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,WAAU;AAAA,sBACV,SAAS;AAAA,sBACT,cAAW;AAAA,sBAEX,8BAAC,KAAE,eAAY,QAAO;AAAA;AAAA,kBACxB;AAAA,mBACF;AAAA,gBAGA,oBAAC,SAAI,IAAI,QAAQ,WAAU,qBACxB,UACH;AAAA,gBAGC,WAAW,QAAQ,SAAS,KAC3B,oBAAC,SAAI,WAAU,uBACZ,kBAAQ,IAAI,CAAC,WACZ;AAAA,kBAAC;AAAA;AAAA,oBAEC,SAAS,OAAO,WAAW;AAAA,oBAC3B,OAAO,OAAO;AAAA,oBACd,UAAU,OAAO;AAAA,oBACjB,SAAS,OAAO;AAAA,oBAChB,SAAS,OAAO;AAAA,oBAEf,iBAAO;AAAA;AAAA,kBAPH,OAAO;AAAA,gBAQd,CACD,GACH;AAAA;AAAA;AAAA,UAEJ;AAAA;AAAA;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEA,OAAO,cAAc;","names":[]}
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkWWYJNWJYcjs = require('./chunk-WWYJNWJY.cjs');
3
+ var _chunkOWWPHXAFcjs = require('./chunk-OWWPHXAF.cjs');
4
4
 
5
5
 
6
- var _chunkCUJBNRJJcjs = require('./chunk-CUJBNRJJ.cjs');
6
+ var _chunkVHSTB7GBcjs = require('./chunk-VHSTB7GB.cjs');
7
7
 
8
8
  // src/components/Alert/Alert.component.tsx
9
9
  var _lucidereact = require('lucide-react');
@@ -40,7 +40,7 @@ var Alert = ({
40
40
  const DefaultIcon = DEFAULT_ICONS[variant];
41
41
  iconNode = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DefaultIcon, { className: "eidos-alert-icon", "aria-hidden": "true" });
42
42
  } else if (isIconType(icon)) {
43
- iconNode = _chunkCUJBNRJJcjs.renderIcon.call(void 0, icon, "eidos-alert-icon");
43
+ iconNode = _chunkVHSTB7GBcjs.renderIcon.call(void 0, icon, "eidos-alert-icon");
44
44
  }
45
45
  }
46
46
  const buttonColor = VARIANT_TO_BUTTON_COLOR[variant];
@@ -50,7 +50,7 @@ var Alert = ({
50
50
  title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "eidos-alert-title", children: title }),
51
51
  children && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-alert-content", children }),
52
52
  action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-alert-action", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
53
- _chunkWWYJNWJYcjs.Button,
53
+ _chunkOWWPHXAFcjs.Button,
54
54
  {
55
55
  variant: action.variant === "filled" ? "filled" : "text",
56
56
  size: "sm",
@@ -76,4 +76,4 @@ var Alert = ({
76
76
 
77
77
 
78
78
  exports.Alert = Alert;
79
- //# sourceMappingURL=chunk-EH42ND5Q.cjs.map
79
+ //# sourceMappingURL=chunk-BIANFFJL.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-EH42ND5Q.cjs","../src/components/Alert/Alert.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACNA,2CAA6D;AA6D5C,+CAAA;AAhDjB,IAAM,cAAA,EAA8E;AAAA,EAClF,IAAA,EAAM,iBAAA;AAAA,EACN,OAAA,EAAS,wBAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAMA,IAAM,wBAAA,EAA6E;AAAA,EACjF,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAMA,SAAS,UAAA,CAAW,KAAA,EAA8C;AAChE,EAAA,OAAO,OAAO,MAAA,IAAU,SAAA;AAC1B;AAMO,IAAM,MAAA,EAA8B,CAAC;AAAA,EAC1C,QAAA,EAAU,MAAA;AAAA,EACV,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,EAAY;AACd,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,QAAA,EAAU,CAAC,aAAA,EAAe,CAAA,aAAA,EAAgB,OAAO,CAAA,CAAA;AAG7B,EAAA;AACM,EAAA;AAElB,EAAA;AAC6B,IAAA;AACE,MAAA;AACjB,MAAA;AACG,IAAA;AACmB,MAAA;AAChD,IAAA;AACF,EAAA;AAEmD,EAAA;AAGjC,EAAA;AACe,IAAA;AAEd,oBAAA;AACU,MAAA;AACK,MAAA;AAEX,MAAA;AACZ,QAAA;AAAA,QAAA;AACwC,UAAA;AAClC,UAAA;AACE,UAAA;AACS,UAAA;AAER,UAAA;AAAA,QAAA;AAEZ,MAAA;AAEJ,IAAA;AAGE,IAAA;AAAC,MAAA;AAAA,MAAA;AACW,QAAA;AACD,QAAA;AACJ,QAAA;AACM,QAAA;AAEI,QAAA;AAAO,MAAA;AACxB,IAAA;AAEJ,EAAA;AAEJ;AD7B0D;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-EH42ND5Q.cjs","sourcesContent":[null,"import React from 'react';\nimport { Info, CircleCheck, TriangleAlert, CircleX, X } from 'lucide-react';\nimport type { AlertProps } from './Alert.types';\nimport type { IconType } from '../../utils';\nimport { renderIcon } from '../../utils';\nimport { Button } from '../Button/Button.component';\nimport './Alert.scss';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\ntype Variant = NonNullable<AlertProps['variant']>;\n\nconst DEFAULT_ICONS: Record<Variant, React.ComponentType<{ className?: string }>> = {\n info: Info,\n success: CircleCheck,\n warning: TriangleAlert,\n danger: CircleX,\n};\n\n/**\n * Button only ships primary | secondary | success | danger.\n * Warning maps to primary (closest neutral-positive colour available).\n */\nconst VARIANT_TO_BUTTON_COLOR: Record<Variant, 'primary' | 'success' | 'danger'> = {\n info: 'primary',\n success: 'success',\n warning: 'primary',\n danger: 'danger',\n};\n\n// ============================================================================\n// Type guard\n// ============================================================================\n\nfunction isIconType(value: boolean | IconType): value is IconType {\n return typeof value !== 'boolean';\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = 'info',\n title,\n children,\n icon,\n onDismiss,\n action,\n className = '',\n}) => {\n const classes = ['eidos-alert', `eidos-alert--${variant}`, className].filter(Boolean).join(' ');\n\n // Determine icon rendering\n const showIcon = icon !== false;\n let iconNode: React.ReactNode = null;\n\n if (showIcon) {\n if (icon === true || icon === undefined) {\n const DefaultIcon = DEFAULT_ICONS[variant];\n iconNode = <DefaultIcon className=\"eidos-alert-icon\" aria-hidden=\"true\" />;\n } else if (isIconType(icon)) {\n iconNode = renderIcon(icon, 'eidos-alert-icon');\n }\n }\n\n const buttonColor = VARIANT_TO_BUTTON_COLOR[variant];\n\n return (\n <div className={classes} role=\"alert\">\n {showIcon && <span className=\"eidos-alert-icon-wrapper\">{iconNode}</span>}\n\n <div className=\"eidos-alert-body\">\n {title && <p className=\"eidos-alert-title\">{title}</p>}\n {children && <div className=\"eidos-alert-content\">{children}</div>}\n {action && (\n <div className=\"eidos-alert-action\">\n <Button\n variant={action.variant === 'filled' ? 'filled' : 'text'}\n size=\"sm\"\n color={buttonColor}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n </div>\n )}\n </div>\n\n {onDismiss && (\n <button\n className=\"eidos-alert-dismiss\"\n onClick={onDismiss}\n type=\"button\"\n aria-label=\"Dismiss\"\n >\n <X aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-BIANFFJL.cjs","../src/components/Alert/Alert.component.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACNA,2CAA6D;AA6D5C,+CAAA;AAhDjB,IAAM,cAAA,EAA8E;AAAA,EAClF,IAAA,EAAM,iBAAA;AAAA,EACN,OAAA,EAAS,wBAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAMA,IAAM,wBAAA,EAA6E;AAAA,EACjF,IAAA,EAAM,SAAA;AAAA,EACN,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAA;AAMA,SAAS,UAAA,CAAW,KAAA,EAA8C;AAChE,EAAA,OAAO,OAAO,MAAA,IAAU,SAAA;AAC1B;AAMO,IAAM,MAAA,EAA8B,CAAC;AAAA,EAC1C,QAAA,EAAU,MAAA;AAAA,EACV,KAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA,EAAY;AACd,CAAA,EAAA,GAAM;AACJ,EAAA,MAAM,QAAA,EAAU,CAAC,aAAA,EAAe,CAAA,aAAA,EAAgB,OAAO,CAAA,CAAA;AAG7B,EAAA;AACM,EAAA;AAElB,EAAA;AAC6B,IAAA;AACE,MAAA;AACjB,MAAA;AACG,IAAA;AACmB,MAAA;AAChD,IAAA;AACF,EAAA;AAEmD,EAAA;AAGjC,EAAA;AACe,IAAA;AAEd,oBAAA;AACU,MAAA;AACK,MAAA;AAEX,MAAA;AACZ,QAAA;AAAA,QAAA;AACwC,UAAA;AAClC,UAAA;AACE,UAAA;AACS,UAAA;AAER,UAAA;AAAA,QAAA;AAEZ,MAAA;AAEJ,IAAA;AAGE,IAAA;AAAC,MAAA;AAAA,MAAA;AACW,QAAA;AACD,QAAA;AACJ,QAAA;AACM,QAAA;AAEI,QAAA;AAAO,MAAA;AACxB,IAAA;AAEJ,EAAA;AAEJ;AD7B0D;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-BIANFFJL.cjs","sourcesContent":[null,"import React from 'react';\nimport { Info, CircleCheck, TriangleAlert, CircleX, X } from 'lucide-react';\nimport type { AlertProps } from './Alert.types';\nimport type { IconType } from '../../utils';\nimport { renderIcon } from '../../utils';\nimport { Button } from '../Button/Button.component';\nimport './Alert.scss';\n\n// ============================================================================\n// Constants\n// ============================================================================\n\ntype Variant = NonNullable<AlertProps['variant']>;\n\nconst DEFAULT_ICONS: Record<Variant, React.ComponentType<{ className?: string }>> = {\n info: Info,\n success: CircleCheck,\n warning: TriangleAlert,\n danger: CircleX,\n};\n\n/**\n * Button only ships primary | secondary | success | danger.\n * Warning maps to primary (closest neutral-positive colour available).\n */\nconst VARIANT_TO_BUTTON_COLOR: Record<Variant, 'primary' | 'success' | 'danger'> = {\n info: 'primary',\n success: 'success',\n warning: 'primary',\n danger: 'danger',\n};\n\n// ============================================================================\n// Type guard\n// ============================================================================\n\nfunction isIconType(value: boolean | IconType): value is IconType {\n return typeof value !== 'boolean';\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const Alert: React.FC<AlertProps> = ({\n variant = 'info',\n title,\n children,\n icon,\n onDismiss,\n action,\n className = '',\n}) => {\n const classes = ['eidos-alert', `eidos-alert--${variant}`, className].filter(Boolean).join(' ');\n\n // Determine icon rendering\n const showIcon = icon !== false;\n let iconNode: React.ReactNode = null;\n\n if (showIcon) {\n if (icon === true || icon === undefined) {\n const DefaultIcon = DEFAULT_ICONS[variant];\n iconNode = <DefaultIcon className=\"eidos-alert-icon\" aria-hidden=\"true\" />;\n } else if (isIconType(icon)) {\n iconNode = renderIcon(icon, 'eidos-alert-icon');\n }\n }\n\n const buttonColor = VARIANT_TO_BUTTON_COLOR[variant];\n\n return (\n <div className={classes} role=\"alert\">\n {showIcon && <span className=\"eidos-alert-icon-wrapper\">{iconNode}</span>}\n\n <div className=\"eidos-alert-body\">\n {title && <p className=\"eidos-alert-title\">{title}</p>}\n {children && <div className=\"eidos-alert-content\">{children}</div>}\n {action && (\n <div className=\"eidos-alert-action\">\n <Button\n variant={action.variant === 'filled' ? 'filled' : 'text'}\n size=\"sm\"\n color={buttonColor}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n </div>\n )}\n </div>\n\n {onDismiss && (\n <button\n className=\"eidos-alert-dismiss\"\n onClick={onDismiss}\n type=\"button\"\n aria-label=\"Dismiss\"\n >\n <X aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n};\n"]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Button
3
- } from "./chunk-L5Q6UDY3.js";
3
+ } from "./chunk-44T4HMFU.js";
4
4
  import {
5
5
  renderIcon
6
- } from "./chunk-EAJHEYZM.js";
6
+ } from "./chunk-WT4WBHBR.js";
7
7
 
8
8
  // src/components/Alert/Alert.component.tsx
9
9
  import { Info, CircleCheck, TriangleAlert, CircleX, X } from "lucide-react";
@@ -76,4 +76,4 @@ var Alert = ({
76
76
  export {
77
77
  Alert
78
78
  };
79
- //# sourceMappingURL=chunk-O2AACVSF.js.map
79
+ //# sourceMappingURL=chunk-BO4LTIJI.js.map