eidos-ui 3.6.3 → 3.8.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 (408) hide show
  1. package/README.md +11 -0
  2. package/dist/{Avatar.types-BY-C09Ke.d.cts → Avatar.types-DkRznn-7.d.cts} +6 -1
  3. package/dist/{Avatar.types-BY-C09Ke.d.ts → Avatar.types-DkRznn-7.d.ts} +6 -1
  4. package/dist/{Breadcrumb.types-DaykU-C8.d.cts → Breadcrumb.types-C3uADbKU.d.cts} +4 -1
  5. package/dist/{Breadcrumb.types-DaykU-C8.d.ts → Breadcrumb.types-C3uADbKU.d.ts} +4 -1
  6. package/dist/Button.types-BCIK8Qlk.d.ts +59 -0
  7. package/dist/Button.types-DkgWjFsk.d.cts +59 -0
  8. package/dist/Chip.types-BM-UZOCv.d.ts +33 -0
  9. package/dist/Chip.types-_1bhyKz4.d.cts +33 -0
  10. package/dist/{Header.types-Ce5Cj301.d.cts → Header.types-a6p0-ZHx.d.cts} +24 -8
  11. package/dist/{Header.types-0XovUp0T.d.ts → Header.types-zbhURbg7.d.ts} +24 -8
  12. package/dist/{Input.types-D7-sWq-q.d.cts → Input.types--K0t_3L2.d.cts} +1 -1
  13. package/dist/{Input.types-CSDMaZNe.d.ts → Input.types--UjucBDd.d.ts} +1 -1
  14. package/dist/{Menu.types-CTnUijv5.d.cts → Menu.types-D6VoK9T9.d.cts} +1 -1
  15. package/dist/{Menu.types-BN4g1-3A.d.ts → Menu.types-tUEhXn52.d.ts} +1 -1
  16. package/dist/{Navigation.types-By5HfPTi.d.ts → Navigation.types-CJRzo9Zo.d.ts} +1 -1
  17. package/dist/{Navigation.types-_MrYqqUI.d.cts → Navigation.types-D95oHZEJ.d.cts} +1 -1
  18. package/dist/{SegmentedControl.types-cjLwwBAm.d.ts → SegmentedControl.types-CHtjABQM.d.ts} +1 -1
  19. package/dist/{SegmentedControl.types-BofrEYyd.d.cts → SegmentedControl.types-D_gHYL9X.d.cts} +1 -1
  20. package/dist/{Select.types-ok-03rLo.d.cts → Select.types-8CGZBgT-.d.cts} +2 -2
  21. package/dist/{Select.types-C2tGy1vj.d.ts → Select.types-CAVh9Gvd.d.ts} +2 -2
  22. package/dist/{Table.types-D8pmgxKA.d.ts → Table.types-BFDE-hhF.d.ts} +2 -2
  23. package/dist/{Table.types-D-9tC0kJ.d.cts → Table.types-Tai7_MTz.d.cts} +2 -2
  24. package/dist/{Toolbar.types-CKnQC_TW.d.ts → Toolbar.types-BqBrPVww.d.ts} +8 -6
  25. package/dist/{Toolbar.types-DUz2mxct.d.cts → Toolbar.types-GCUgzuKW.d.cts} +8 -6
  26. package/dist/alert/index.cjs +8 -5
  27. package/dist/alert/index.cjs.map +1 -1
  28. package/dist/alert/index.d.cts +1 -1
  29. package/dist/alert/index.d.ts +1 -1
  30. package/dist/alert/index.js +7 -4
  31. package/dist/avatar/index.d.cts +2 -2
  32. package/dist/avatar/index.d.ts +2 -2
  33. package/dist/breadcrumb/index.cjs +4 -2
  34. package/dist/breadcrumb/index.cjs.map +1 -1
  35. package/dist/breadcrumb/index.d.cts +2 -2
  36. package/dist/breadcrumb/index.d.ts +2 -2
  37. package/dist/breadcrumb/index.js +3 -1
  38. package/dist/button/index.cjs +7 -4
  39. package/dist/button/index.cjs.map +1 -1
  40. package/dist/button/index.d.cts +5 -5
  41. package/dist/button/index.d.ts +5 -5
  42. package/dist/button/index.js +6 -3
  43. package/dist/button-group/index.d.cts +2 -2
  44. package/dist/button-group/index.d.ts +2 -2
  45. package/dist/chip/index.cjs +7 -4
  46. package/dist/chip/index.cjs.map +1 -1
  47. package/dist/chip/index.d.cts +5 -23
  48. package/dist/chip/index.d.ts +5 -23
  49. package/dist/chip/index.js +6 -3
  50. package/dist/{chunk-DRXPTACG.js → chunk-26PRBZA6.js} +6 -2
  51. package/dist/chunk-26PRBZA6.js.map +1 -0
  52. package/dist/chunk-2IXCEKLI.js +82 -0
  53. package/dist/chunk-2IXCEKLI.js.map +1 -0
  54. package/dist/{chunk-GWHZFX2H.js → chunk-2TIMJD4K.js} +29 -6
  55. package/dist/chunk-2TIMJD4K.js.map +1 -0
  56. package/dist/{chunk-RHFD2Z5V.js → chunk-3TF2GZSG.js} +7 -7
  57. package/dist/{chunk-TC5IC6OP.cjs → chunk-3VXUOAIJ.cjs} +3 -3
  58. package/dist/{chunk-TC5IC6OP.cjs.map → chunk-3VXUOAIJ.cjs.map} +1 -1
  59. package/dist/{chunk-JHX6JK3M.js → chunk-3X6QVHTD.js} +2 -2
  60. package/dist/{chunk-7VJCGKVP.cjs → chunk-4HZIXRAJ.cjs} +11 -11
  61. package/dist/{chunk-7VJCGKVP.cjs.map → chunk-4HZIXRAJ.cjs.map} +1 -1
  62. package/dist/{chunk-MQAOXZD4.js → chunk-4S57PE43.js} +4 -4
  63. package/dist/{chunk-JT4KVXJK.js → chunk-4V2XYUQL.js} +2 -2
  64. package/dist/{chunk-PMSENLOA.cjs → chunk-544RAXWO.cjs} +19 -19
  65. package/dist/{chunk-PMSENLOA.cjs.map → chunk-544RAXWO.cjs.map} +1 -1
  66. package/dist/{chunk-4JSTBA4F.cjs → chunk-6CW5QSYV.cjs} +7 -7
  67. package/dist/{chunk-4JSTBA4F.cjs.map → chunk-6CW5QSYV.cjs.map} +1 -1
  68. package/dist/{chunk-AR2ZOO6L.js → chunk-6FXFKMJ5.js} +3 -3
  69. package/dist/{chunk-KREHT4AQ.cjs → chunk-6IB27I5K.cjs} +8 -8
  70. package/dist/{chunk-KREHT4AQ.cjs.map → chunk-6IB27I5K.cjs.map} +1 -1
  71. package/dist/{chunk-LGDODZHI.js → chunk-6LTZV6HN.js} +4 -4
  72. package/dist/{chunk-YP4HUBKN.js → chunk-6NAOAKII.js} +2 -2
  73. package/dist/chunk-75Q5OS7L.cjs +10 -0
  74. package/dist/chunk-75Q5OS7L.cjs.map +1 -0
  75. package/dist/{chunk-LQXFXXMJ.cjs → chunk-7FV2X62W.cjs} +7 -7
  76. package/dist/{chunk-LQXFXXMJ.cjs.map → chunk-7FV2X62W.cjs.map} +1 -1
  77. package/dist/{chunk-2T7ZMMH5.cjs → chunk-7NUVLVSL.cjs} +5 -5
  78. package/dist/{chunk-2T7ZMMH5.cjs.map → chunk-7NUVLVSL.cjs.map} +1 -1
  79. package/dist/chunk-ACH7SYQ2.js +47 -0
  80. package/dist/chunk-ACH7SYQ2.js.map +1 -0
  81. package/dist/{chunk-HNGFRRVZ.cjs → chunk-AUNDBUHM.cjs} +3 -3
  82. package/dist/{chunk-HNGFRRVZ.cjs.map → chunk-AUNDBUHM.cjs.map} +1 -1
  83. package/dist/{chunk-XZLSHEHE.cjs → chunk-B2OHBIAL.cjs} +10 -10
  84. package/dist/{chunk-XZLSHEHE.cjs.map → chunk-B2OHBIAL.cjs.map} +1 -1
  85. package/dist/chunk-BDH2MXJW.js +46 -0
  86. package/dist/chunk-BDH2MXJW.js.map +1 -0
  87. package/dist/{chunk-D7SQ7LHJ.js → chunk-BO3KK3ZQ.js} +2 -2
  88. package/dist/{chunk-NOQF7UQ5.cjs → chunk-CFVUUMQA.cjs} +6 -6
  89. package/dist/{chunk-NOQF7UQ5.cjs.map → chunk-CFVUUMQA.cjs.map} +1 -1
  90. package/dist/chunk-CJT7L764.cjs +21 -0
  91. package/dist/chunk-CJT7L764.cjs.map +1 -0
  92. package/dist/{chunk-5XH2PHT2.js → chunk-CNTG7OOO.js} +14 -14
  93. package/dist/{chunk-I6M6CVI2.cjs → chunk-DG3O5NV4.cjs} +3 -3
  94. package/dist/{chunk-I6M6CVI2.cjs.map → chunk-DG3O5NV4.cjs.map} +1 -1
  95. package/dist/{chunk-WNDDS367.js → chunk-DPTTDHZ5.js} +3 -3
  96. package/dist/{chunk-35LGEPLP.cjs → chunk-ENMDOQQO.cjs} +29 -14
  97. package/dist/chunk-ENMDOQQO.cjs.map +1 -0
  98. package/dist/{chunk-V4BZWBZT.cjs → chunk-F5IRMMZ2.cjs} +7 -7
  99. package/dist/{chunk-V4BZWBZT.cjs.map → chunk-F5IRMMZ2.cjs.map} +1 -1
  100. package/dist/{chunk-WE2SBWZ6.js → chunk-FE7S4RSK.js} +10 -10
  101. package/dist/chunk-FE7S4RSK.js.map +1 -0
  102. package/dist/{chunk-BFKPJ627.js → chunk-FHOD3FUN.js} +4 -4
  103. package/dist/{chunk-SNRRF64M.js → chunk-GDRLVX2A.js} +31 -10
  104. package/dist/chunk-GDRLVX2A.js.map +1 -0
  105. package/dist/{chunk-5O73AALP.cjs → chunk-GP6EEZH5.cjs} +7 -3
  106. package/dist/chunk-GP6EEZH5.cjs.map +1 -0
  107. package/dist/{chunk-SDUGYJGW.js → chunk-H3C6YECZ.js} +6 -6
  108. package/dist/{chunk-RJVHR45I.cjs → chunk-H46ZLPNJ.cjs} +7 -7
  109. package/dist/{chunk-RJVHR45I.cjs.map → chunk-H46ZLPNJ.cjs.map} +1 -1
  110. package/dist/{chunk-66UQTF57.cjs → chunk-HLI4SOH3.cjs} +45 -45
  111. package/dist/{chunk-66UQTF57.cjs.map → chunk-HLI4SOH3.cjs.map} +1 -1
  112. package/dist/{chunk-ZMRINZIO.cjs → chunk-HR5MWA3B.cjs} +5 -5
  113. package/dist/{chunk-ZMRINZIO.cjs.map → chunk-HR5MWA3B.cjs.map} +1 -1
  114. package/dist/{chunk-MPIVBAMY.js → chunk-HYRLK462.js} +2 -2
  115. package/dist/{chunk-FIVMMCGM.js → chunk-IHPSRTVW.js} +4 -4
  116. package/dist/{chunk-THCTUBX6.js → chunk-IKXXXVUO.js} +3 -3
  117. package/dist/{chunk-JPYJQ4TF.cjs → chunk-JFV56ISS.cjs} +6 -6
  118. package/dist/{chunk-JPYJQ4TF.cjs.map → chunk-JFV56ISS.cjs.map} +1 -1
  119. package/dist/{chunk-75GFIQRU.js → chunk-JY77VJAZ.js} +30 -15
  120. package/dist/chunk-JY77VJAZ.js.map +1 -0
  121. package/dist/chunk-KXDGW6LJ.cjs +46 -0
  122. package/dist/chunk-KXDGW6LJ.cjs.map +1 -0
  123. package/dist/{chunk-24HKKSKX.js → chunk-L6ERHCQ2.js} +3 -3
  124. package/dist/{chunk-4LNTZPSQ.js → chunk-L6YJ6QTZ.js} +2 -2
  125. package/dist/{chunk-KBQD4JLK.cjs → chunk-LUDK44NZ.cjs} +3 -3
  126. package/dist/{chunk-KBQD4JLK.cjs.map → chunk-LUDK44NZ.cjs.map} +1 -1
  127. package/dist/chunk-LWCFT5SP.cjs +82 -0
  128. package/dist/chunk-LWCFT5SP.cjs.map +1 -0
  129. package/dist/{chunk-JNY7TUDS.js → chunk-MCPGI6EI.js} +2 -2
  130. package/dist/{chunk-DU5JKTHK.cjs → chunk-MKC6V3SY.cjs} +6 -6
  131. package/dist/{chunk-DU5JKTHK.cjs.map → chunk-MKC6V3SY.cjs.map} +1 -1
  132. package/dist/{chunk-J76JHN7J.cjs → chunk-N5NXKVFJ.cjs} +10 -10
  133. package/dist/{chunk-J76JHN7J.cjs.map → chunk-N5NXKVFJ.cjs.map} +1 -1
  134. package/dist/{chunk-XERBOFYZ.cjs → chunk-NERASTO2.cjs} +3 -3
  135. package/dist/{chunk-XERBOFYZ.cjs.map → chunk-NERASTO2.cjs.map} +1 -1
  136. package/dist/{chunk-3KBBJZHK.cjs → chunk-NFD7MPX4.cjs} +16 -14
  137. package/dist/chunk-NFD7MPX4.cjs.map +1 -0
  138. package/dist/{chunk-3ZRFOKDM.cjs → chunk-NNAEQR3Y.cjs} +30 -30
  139. package/dist/{chunk-3ZRFOKDM.cjs.map → chunk-NNAEQR3Y.cjs.map} +1 -1
  140. package/dist/{chunk-36JFXFM2.cjs → chunk-OGGZIFTI.cjs} +38 -38
  141. package/dist/chunk-OGGZIFTI.cjs.map +1 -0
  142. package/dist/{chunk-2PCCGQOH.js → chunk-P6OJQ2RN.js} +6 -6
  143. package/dist/{chunk-3RWZC6OW.cjs → chunk-PE2SLXUS.cjs} +5 -5
  144. package/dist/{chunk-3RWZC6OW.cjs.map → chunk-PE2SLXUS.cjs.map} +1 -1
  145. package/dist/chunk-QD32IMMH.js +13 -0
  146. package/dist/chunk-QD32IMMH.js.map +1 -0
  147. package/dist/{chunk-HEXAY6DE.cjs → chunk-QUSO4GFA.cjs} +7 -7
  148. package/dist/{chunk-HEXAY6DE.cjs.map → chunk-QUSO4GFA.cjs.map} +1 -1
  149. package/dist/{chunk-OOCCSMWM.js → chunk-RHWZX7PB.js} +9 -7
  150. package/dist/chunk-RHWZX7PB.js.map +1 -0
  151. package/dist/{chunk-YXRKBKFB.js → chunk-S5CMZFX6.js} +3 -3
  152. package/dist/{chunk-4AO5RKV5.cjs → chunk-SLHIVEFW.cjs} +7 -7
  153. package/dist/{chunk-4AO5RKV5.cjs.map → chunk-SLHIVEFW.cjs.map} +1 -1
  154. package/dist/{chunk-HEX4IMLO.js → chunk-TJQNGJHP.js} +4 -4
  155. package/dist/{chunk-JCKGAAPZ.cjs → chunk-TNQ2ZZ7W.cjs} +9 -9
  156. package/dist/{chunk-JCKGAAPZ.cjs.map → chunk-TNQ2ZZ7W.cjs.map} +1 -1
  157. package/dist/chunk-U32K2H3N.js +10 -0
  158. package/dist/chunk-U32K2H3N.js.map +1 -0
  159. package/dist/{chunk-RHHZRTWM.js → chunk-U34INRFO.js} +28 -13
  160. package/dist/chunk-U34INRFO.js.map +1 -0
  161. package/dist/{chunk-SFFKQQ5Z.js → chunk-U4SVBE2M.js} +5 -5
  162. package/dist/{chunk-O3QM3BFE.js → chunk-UC4NYF6T.js} +2 -2
  163. package/dist/{chunk-6JHVXWDV.cjs → chunk-ULKWUKD2.cjs} +22 -22
  164. package/dist/{chunk-6JHVXWDV.cjs.map → chunk-ULKWUKD2.cjs.map} +1 -1
  165. package/dist/{chunk-BEOECPVJ.cjs → chunk-UTYY35QX.cjs} +3 -3
  166. package/dist/{chunk-BEOECPVJ.cjs.map → chunk-UTYY35QX.cjs.map} +1 -1
  167. package/dist/{chunk-7BFODYNL.cjs → chunk-UUT2VEN5.cjs} +7 -7
  168. package/dist/{chunk-7BFODYNL.cjs.map → chunk-UUT2VEN5.cjs.map} +1 -1
  169. package/dist/chunk-V3T7RO4F.js +21 -0
  170. package/dist/chunk-V3T7RO4F.js.map +1 -0
  171. package/dist/{chunk-GIEDIAPD.js → chunk-V5CM5TH3.js} +3 -3
  172. package/dist/{chunk-L65MHFMD.js → chunk-V64DICJK.js} +3 -3
  173. package/dist/{chunk-KIZVY57H.cjs → chunk-VXC7Z7XB.cjs} +5 -5
  174. package/dist/{chunk-KIZVY57H.cjs.map → chunk-VXC7Z7XB.cjs.map} +1 -1
  175. package/dist/chunk-VYF7WV4K.cjs +47 -0
  176. package/dist/chunk-VYF7WV4K.cjs.map +1 -0
  177. package/dist/{chunk-P4XZH3OR.js → chunk-WHQGJHMD.js} +4 -4
  178. package/dist/{chunk-TTLFY76J.cjs → chunk-WR77IZUU.cjs} +32 -9
  179. package/dist/chunk-WR77IZUU.cjs.map +1 -0
  180. package/dist/{chunk-O2BECFXJ.cjs → chunk-WTFEMOV5.cjs} +43 -22
  181. package/dist/chunk-WTFEMOV5.cjs.map +1 -0
  182. package/dist/{chunk-YAKTVIVK.js → chunk-XIUZT4TO.js} +3 -3
  183. package/dist/chunk-XPG56DLQ.cjs +103 -0
  184. package/dist/chunk-XPG56DLQ.cjs.map +1 -0
  185. package/dist/{chunk-GPVGGBIR.js → chunk-XWMXEJVZ.js} +2 -2
  186. package/dist/chunk-XZILHRKG.cjs +13 -0
  187. package/dist/chunk-XZILHRKG.cjs.map +1 -0
  188. package/dist/{chunk-VQGLVBPL.cjs → chunk-YIOHKQ6Y.cjs} +11 -4
  189. package/dist/chunk-YIOHKQ6Y.cjs.map +1 -0
  190. package/dist/{chunk-A3LMUPG3.js → chunk-Z3IJWYUD.js} +2 -2
  191. package/dist/{chunk-4J25XZDI.js → chunk-ZJWQPZ7E.js} +9 -2
  192. package/dist/chunk-ZJWQPZ7E.js.map +1 -0
  193. package/dist/color-picker/index.cjs +5 -4
  194. package/dist/color-picker/index.cjs.map +1 -1
  195. package/dist/color-picker/index.js +4 -3
  196. package/dist/combobox/index.cjs +7 -6
  197. package/dist/combobox/index.cjs.map +1 -1
  198. package/dist/combobox/index.js +6 -5
  199. package/dist/command-palette/index.cjs +4 -3
  200. package/dist/command-palette/index.cjs.map +1 -1
  201. package/dist/command-palette/index.js +3 -2
  202. package/dist/context-menu/index.cjs +7 -6
  203. package/dist/context-menu/index.cjs.map +1 -1
  204. package/dist/context-menu/index.d.cts +2 -2
  205. package/dist/context-menu/index.d.ts +2 -2
  206. package/dist/context-menu/index.js +6 -5
  207. package/dist/conversation/index.cjs +11 -8
  208. package/dist/conversation/index.cjs.map +1 -1
  209. package/dist/conversation/index.d.cts +3 -3
  210. package/dist/conversation/index.d.ts +3 -3
  211. package/dist/conversation/index.js +10 -7
  212. package/dist/data-grid/index.cjs +18 -15
  213. package/dist/data-grid/index.cjs.map +1 -1
  214. package/dist/data-grid/index.d.cts +8 -8
  215. package/dist/data-grid/index.d.ts +8 -8
  216. package/dist/data-grid/index.js +17 -14
  217. package/dist/date-picker/index.cjs +11 -8
  218. package/dist/date-picker/index.cjs.map +1 -1
  219. package/dist/date-picker/index.d.cts +2 -2
  220. package/dist/date-picker/index.d.ts +2 -2
  221. package/dist/date-picker/index.js +10 -7
  222. package/dist/drawer/index.cjs +8 -5
  223. package/dist/drawer/index.cjs.map +1 -1
  224. package/dist/drawer/index.d.cts +5 -4
  225. package/dist/drawer/index.d.ts +5 -4
  226. package/dist/drawer/index.js +7 -4
  227. package/dist/dropdown/index.cjs +4 -3
  228. package/dist/dropdown/index.cjs.map +1 -1
  229. package/dist/dropdown/index.js +3 -2
  230. package/dist/header/index.cjs +9 -6
  231. package/dist/header/index.cjs.map +1 -1
  232. package/dist/header/index.d.cts +10 -10
  233. package/dist/header/index.d.ts +10 -10
  234. package/dist/header/index.js +8 -5
  235. package/dist/index.cjs +59 -42
  236. package/dist/index.cjs.map +1 -1
  237. package/dist/index.css +107 -34
  238. package/dist/index.d.cts +16 -13
  239. package/dist/index.d.ts +16 -13
  240. package/dist/index.js +65 -48
  241. package/dist/inline-edit/index.cjs +6 -5
  242. package/dist/inline-edit/index.cjs.map +1 -1
  243. package/dist/inline-edit/index.js +5 -4
  244. package/dist/input/index.cjs +5 -4
  245. package/dist/input/index.cjs.map +1 -1
  246. package/dist/input/index.d.cts +3 -3
  247. package/dist/input/index.d.ts +3 -3
  248. package/dist/input/index.js +4 -3
  249. package/dist/link-provider/index.cjs +12 -0
  250. package/dist/link-provider/index.cjs.map +1 -0
  251. package/dist/link-provider/index.d.cts +43 -0
  252. package/dist/link-provider/index.d.ts +43 -0
  253. package/dist/link-provider/index.js +12 -0
  254. package/dist/link-provider/index.js.map +1 -0
  255. package/dist/lucide-icons/index.cjs +9 -0
  256. package/dist/lucide-icons/index.cjs.map +1 -0
  257. package/dist/lucide-icons/index.d.cts +2 -0
  258. package/dist/lucide-icons/index.d.ts +2 -0
  259. package/dist/lucide-icons/index.js +9 -0
  260. package/dist/lucide-icons/index.js.map +1 -0
  261. package/dist/menu/index.cjs +6 -5
  262. package/dist/menu/index.cjs.map +1 -1
  263. package/dist/menu/index.d.cts +3 -3
  264. package/dist/menu/index.d.ts +3 -3
  265. package/dist/menu/index.js +5 -4
  266. package/dist/modal/index.cjs +8 -5
  267. package/dist/modal/index.cjs.map +1 -1
  268. package/dist/modal/index.d.cts +2 -2
  269. package/dist/modal/index.d.ts +2 -2
  270. package/dist/modal/index.js +7 -4
  271. package/dist/navigation/index.cjs +8 -5
  272. package/dist/navigation/index.cjs.map +1 -1
  273. package/dist/navigation/index.d.cts +3 -3
  274. package/dist/navigation/index.d.ts +3 -3
  275. package/dist/navigation/index.js +7 -4
  276. package/dist/number-input/index.cjs +4 -3
  277. package/dist/number-input/index.cjs.map +1 -1
  278. package/dist/number-input/index.js +3 -2
  279. package/dist/page-layout/index.cjs +16 -13
  280. package/dist/page-layout/index.cjs.map +1 -1
  281. package/dist/page-layout/index.d.cts +8 -8
  282. package/dist/page-layout/index.d.ts +8 -8
  283. package/dist/page-layout/index.js +15 -12
  284. package/dist/pagination/index.cjs +11 -8
  285. package/dist/pagination/index.cjs.map +1 -1
  286. package/dist/pagination/index.js +10 -7
  287. package/dist/popover/index.cjs +4 -3
  288. package/dist/popover/index.cjs.map +1 -1
  289. package/dist/popover/index.d.cts +1 -1
  290. package/dist/popover/index.d.ts +1 -1
  291. package/dist/popover/index.js +3 -2
  292. package/dist/renderIcon-BW3PUtg8.d.cts +50 -0
  293. package/dist/renderIcon-BW3PUtg8.d.ts +50 -0
  294. package/dist/segmented-control/index.cjs +5 -4
  295. package/dist/segmented-control/index.cjs.map +1 -1
  296. package/dist/segmented-control/index.d.cts +3 -3
  297. package/dist/segmented-control/index.d.ts +3 -3
  298. package/dist/segmented-control/index.js +4 -3
  299. package/dist/select/index.cjs +7 -6
  300. package/dist/select/index.cjs.map +1 -1
  301. package/dist/select/index.d.cts +4 -4
  302. package/dist/select/index.d.ts +4 -4
  303. package/dist/select/index.js +6 -5
  304. package/dist/snackbar/index.cjs +8 -5
  305. package/dist/snackbar/index.cjs.map +1 -1
  306. package/dist/snackbar/index.js +7 -4
  307. package/dist/split-button/index.cjs +7 -6
  308. package/dist/split-button/index.cjs.map +1 -1
  309. package/dist/split-button/index.d.cts +2 -2
  310. package/dist/split-button/index.d.ts +2 -2
  311. package/dist/split-button/index.js +6 -5
  312. package/dist/split-chip/index.cjs +14 -0
  313. package/dist/split-chip/index.cjs.map +1 -0
  314. package/dist/split-chip/index.d.cts +67 -0
  315. package/dist/split-chip/index.d.ts +67 -0
  316. package/dist/split-chip/index.js +14 -0
  317. package/dist/split-chip/index.js.map +1 -0
  318. package/dist/table/index.cjs +16 -13
  319. package/dist/table/index.cjs.map +1 -1
  320. package/dist/table/index.d.cts +4 -4
  321. package/dist/table/index.d.ts +4 -4
  322. package/dist/table/index.js +15 -12
  323. package/dist/tabs/index.cjs +4 -3
  324. package/dist/tabs/index.cjs.map +1 -1
  325. package/dist/tabs/index.d.cts +1 -1
  326. package/dist/tabs/index.d.ts +1 -1
  327. package/dist/tabs/index.js +3 -2
  328. package/dist/tag-input/index.cjs +9 -6
  329. package/dist/tag-input/index.cjs.map +1 -1
  330. package/dist/tag-input/index.js +8 -5
  331. package/dist/textarea/index.cjs +5 -4
  332. package/dist/textarea/index.cjs.map +1 -1
  333. package/dist/textarea/index.d.cts +1 -1
  334. package/dist/textarea/index.d.ts +1 -1
  335. package/dist/textarea/index.js +4 -3
  336. package/dist/theme-editor/index.cjs +14 -11
  337. package/dist/theme-editor/index.cjs.map +1 -1
  338. package/dist/theme-editor/index.js +13 -10
  339. package/dist/theme-provider/index.cjs +4 -3
  340. package/dist/theme-provider/index.cjs.map +1 -1
  341. package/dist/theme-provider/index.js +3 -2
  342. package/dist/timeline/index.cjs +2 -2
  343. package/dist/timeline/index.d.cts +18 -3
  344. package/dist/timeline/index.d.ts +18 -3
  345. package/dist/timeline/index.js +1 -1
  346. package/dist/toolbar/index.cjs +12 -9
  347. package/dist/toolbar/index.cjs.map +1 -1
  348. package/dist/toolbar/index.d.cts +7 -7
  349. package/dist/toolbar/index.d.ts +7 -7
  350. package/dist/toolbar/index.js +11 -8
  351. package/dist/tooltip/index.cjs +4 -3
  352. package/dist/tooltip/index.cjs.map +1 -1
  353. package/dist/tooltip/index.js +3 -2
  354. package/package.json +4 -2
  355. package/dist/Button.types-BH0CPyPx.d.ts +0 -33
  356. package/dist/Button.types-DZRCVqyN.d.cts +0 -33
  357. package/dist/chunk-35LGEPLP.cjs.map +0 -1
  358. package/dist/chunk-36JFXFM2.cjs.map +0 -1
  359. package/dist/chunk-3KBBJZHK.cjs.map +0 -1
  360. package/dist/chunk-4J25XZDI.js.map +0 -1
  361. package/dist/chunk-5O73AALP.cjs.map +0 -1
  362. package/dist/chunk-75GFIQRU.js.map +0 -1
  363. package/dist/chunk-DA375AI6.cjs +0 -88
  364. package/dist/chunk-DA375AI6.cjs.map +0 -1
  365. package/dist/chunk-DRXPTACG.js.map +0 -1
  366. package/dist/chunk-GWHZFX2H.js.map +0 -1
  367. package/dist/chunk-NEQXEVHM.js +0 -34
  368. package/dist/chunk-NEQXEVHM.js.map +0 -1
  369. package/dist/chunk-O2BECFXJ.cjs.map +0 -1
  370. package/dist/chunk-OOCCSMWM.js.map +0 -1
  371. package/dist/chunk-RHHZRTWM.js.map +0 -1
  372. package/dist/chunk-SNRRF64M.js.map +0 -1
  373. package/dist/chunk-TTLFY76J.cjs.map +0 -1
  374. package/dist/chunk-VQGLVBPL.cjs.map +0 -1
  375. package/dist/chunk-WE2SBWZ6.js.map +0 -1
  376. package/dist/chunk-ZMDZGL5A.cjs +0 -34
  377. package/dist/chunk-ZMDZGL5A.cjs.map +0 -1
  378. package/dist/renderIcon-C2lEMMzb.d.cts +0 -30
  379. package/dist/renderIcon-C2lEMMzb.d.ts +0 -30
  380. /package/dist/{chunk-RHFD2Z5V.js.map → chunk-3TF2GZSG.js.map} +0 -0
  381. /package/dist/{chunk-JHX6JK3M.js.map → chunk-3X6QVHTD.js.map} +0 -0
  382. /package/dist/{chunk-MQAOXZD4.js.map → chunk-4S57PE43.js.map} +0 -0
  383. /package/dist/{chunk-JT4KVXJK.js.map → chunk-4V2XYUQL.js.map} +0 -0
  384. /package/dist/{chunk-AR2ZOO6L.js.map → chunk-6FXFKMJ5.js.map} +0 -0
  385. /package/dist/{chunk-LGDODZHI.js.map → chunk-6LTZV6HN.js.map} +0 -0
  386. /package/dist/{chunk-YP4HUBKN.js.map → chunk-6NAOAKII.js.map} +0 -0
  387. /package/dist/{chunk-D7SQ7LHJ.js.map → chunk-BO3KK3ZQ.js.map} +0 -0
  388. /package/dist/{chunk-5XH2PHT2.js.map → chunk-CNTG7OOO.js.map} +0 -0
  389. /package/dist/{chunk-WNDDS367.js.map → chunk-DPTTDHZ5.js.map} +0 -0
  390. /package/dist/{chunk-BFKPJ627.js.map → chunk-FHOD3FUN.js.map} +0 -0
  391. /package/dist/{chunk-SDUGYJGW.js.map → chunk-H3C6YECZ.js.map} +0 -0
  392. /package/dist/{chunk-MPIVBAMY.js.map → chunk-HYRLK462.js.map} +0 -0
  393. /package/dist/{chunk-FIVMMCGM.js.map → chunk-IHPSRTVW.js.map} +0 -0
  394. /package/dist/{chunk-THCTUBX6.js.map → chunk-IKXXXVUO.js.map} +0 -0
  395. /package/dist/{chunk-24HKKSKX.js.map → chunk-L6ERHCQ2.js.map} +0 -0
  396. /package/dist/{chunk-4LNTZPSQ.js.map → chunk-L6YJ6QTZ.js.map} +0 -0
  397. /package/dist/{chunk-JNY7TUDS.js.map → chunk-MCPGI6EI.js.map} +0 -0
  398. /package/dist/{chunk-2PCCGQOH.js.map → chunk-P6OJQ2RN.js.map} +0 -0
  399. /package/dist/{chunk-YXRKBKFB.js.map → chunk-S5CMZFX6.js.map} +0 -0
  400. /package/dist/{chunk-HEX4IMLO.js.map → chunk-TJQNGJHP.js.map} +0 -0
  401. /package/dist/{chunk-SFFKQQ5Z.js.map → chunk-U4SVBE2M.js.map} +0 -0
  402. /package/dist/{chunk-O3QM3BFE.js.map → chunk-UC4NYF6T.js.map} +0 -0
  403. /package/dist/{chunk-GIEDIAPD.js.map → chunk-V5CM5TH3.js.map} +0 -0
  404. /package/dist/{chunk-L65MHFMD.js.map → chunk-V64DICJK.js.map} +0 -0
  405. /package/dist/{chunk-P4XZH3OR.js.map → chunk-WHQGJHMD.js.map} +0 -0
  406. /package/dist/{chunk-YAKTVIVK.js.map → chunk-XIUZT4TO.js.map} +0 -0
  407. /package/dist/{chunk-GPVGGBIR.js.map → chunk-XWMXEJVZ.js.map} +0 -0
  408. /package/dist/{chunk-A3LMUPG3.js.map → chunk-Z3IJWYUD.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-TC5IC6OP.cjs","../src/components/NumberInput/NumberInput.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-TC5IC6OP.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
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-3VXUOAIJ.cjs","../src/components/NumberInput/NumberInput.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-3VXUOAIJ.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"]}
@@ -2,7 +2,7 @@ import {
2
2
  devWarn,
3
3
  fullWidthModifier,
4
4
  useIsClient
5
- } from "./chunk-RHHZRTWM.js";
5
+ } from "./chunk-U34INRFO.js";
6
6
 
7
7
  // src/components/Dropdown/Dropdown.context.types.ts
8
8
  import { createContext } from "react";
@@ -404,4 +404,4 @@ export {
404
404
  useDropdownContext,
405
405
  Dropdown
406
406
  };
407
- //# sourceMappingURL=chunk-JHX6JK3M.js.map
407
+ //# sourceMappingURL=chunk-3X6QVHTD.js.map
@@ -1,11 +1,11 @@
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 _chunkBEOECPVJcjs = require('./chunk-BEOECPVJ.cjs');
3
+ var _chunkUTYY35QXcjs = require('./chunk-UTYY35QX.cjs');
4
4
 
5
5
 
6
6
 
7
7
 
8
- var _chunk35LGEPLPcjs = require('./chunk-35LGEPLP.cjs');
8
+ var _chunkENMDOQQOcjs = require('./chunk-ENMDOQQO.cjs');
9
9
 
10
10
  // src/components/Input/Input.component.tsx
11
11
  var _react = require('react');
@@ -52,7 +52,7 @@ var Input = _react.forwardRef.call(void 0,
52
52
  const errorId = `${inputId}-error`;
53
53
  const describedBy = [restInputProps["aria-describedby"], error ? errorId : null].filter(Boolean).join(" ") || void 0;
54
54
  if (posIcon && posIconButton && onPosIconClick && !posIconLabel) {
55
- _chunk35LGEPLPcjs.devWarn.call(void 0,
55
+ _chunkENMDOQQOcjs.devWarn.call(void 0,
56
56
  "input-pos-icon-label",
57
57
  'Input: `posIconButton` renders an icon-only button, so it needs `posIconLabel` to have an accessible name. Falling back to "Input action".'
58
58
  );
@@ -133,7 +133,7 @@ var Input = _react.forwardRef.call(void 0,
133
133
  `eidos-input--${variant}`,
134
134
  `eidos-input--${color}`,
135
135
  `eidos-input--${size}`,
136
- fullWidth && _chunk35LGEPLPcjs.fullWidthModifier.call(void 0, "eidos-input"),
136
+ fullWidth && _chunkENMDOQQOcjs.fullWidthModifier.call(void 0, "eidos-input"),
137
137
  loading && `eidos-input--loading`,
138
138
  error && `eidos-input--error`
139
139
  ].filter(Boolean).join(" ");
@@ -142,7 +142,7 @@ var Input = _react.forwardRef.call(void 0,
142
142
  `eidos-input-wrapper--${variant}`,
143
143
  `eidos-input-wrapper--${color}`,
144
144
  `eidos-input-wrapper--${size}`,
145
- fullWidth && _chunk35LGEPLPcjs.fullWidthModifier.call(void 0, "eidos-input-wrapper"),
145
+ fullWidth && _chunkENMDOQQOcjs.fullWidthModifier.call(void 0, "eidos-input-wrapper"),
146
146
  loading && `eidos-input-wrapper--loading`,
147
147
  isFocused && `eidos-input-wrapper--focused`,
148
148
  error && `eidos-input-wrapper--error`
@@ -156,16 +156,16 @@ var Input = _react.forwardRef.call(void 0,
156
156
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
157
157
  "div",
158
158
  {
159
- className: `eidos-input-container ${fullWidth ? _chunk35LGEPLPcjs.fullWidthModifier.call(void 0, "eidos-input-container") : ""} ${className}`,
159
+ className: `eidos-input-container ${fullWidth ? _chunkENMDOQQOcjs.fullWidthModifier.call(void 0, "eidos-input-container") : ""} ${className}`,
160
160
  style: width ? { width: typeof width === "number" ? `${width}px` : width, maxWidth: "100%" } : void 0,
161
161
  children: [
162
162
  label && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "label", { htmlFor: inputId, className: labelClasses, children: [
163
163
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-label-text`, children: label }),
164
164
  isRequired && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-required-asterisk`, children: "*" }),
165
- disclaimerIcon && (disclaimerContent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBEOECPVJcjs.Tooltip, { message: disclaimerContent, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-disclaimer-icon`, children: _chunk35LGEPLPcjs.renderIcon.call(void 0, disclaimerIcon, `eidos-input-disclaimer-icon-svg`) }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-disclaimer-icon`, children: _chunk35LGEPLPcjs.renderIcon.call(void 0, disclaimerIcon, `eidos-input-disclaimer-icon-svg`) }))
165
+ disclaimerIcon && (disclaimerContent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUTYY35QXcjs.Tooltip, { message: disclaimerContent, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-disclaimer-icon`, children: _chunkENMDOQQOcjs.renderIcon.call(void 0, disclaimerIcon, `eidos-input-disclaimer-icon-svg`) }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-disclaimer-icon`, children: _chunkENMDOQQOcjs.renderIcon.call(void 0, disclaimerIcon, `eidos-input-disclaimer-icon-svg`) }))
166
166
  ] }),
167
167
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: wrapperClasses, children: [
168
- preIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-pre-icon`, children: _chunk35LGEPLPcjs.renderIcon.call(void 0, preIcon, `eidos-input-pre-icon-svg`) }),
168
+ preIcon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-pre-icon`, children: _chunkENMDOQQOcjs.renderIcon.call(void 0, preIcon, `eidos-input-pre-icon-svg`) }),
169
169
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
170
170
  "input",
171
171
  {
@@ -214,7 +214,7 @@ var Input = _react.forwardRef.call(void 0,
214
214
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: `eidos-input-clear-button-icon` })
215
215
  }
216
216
  ),
217
- posIcon && !posIconButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-pos-icon`, children: _chunk35LGEPLPcjs.renderIcon.call(void 0, posIcon, `eidos-input-pos-icon-svg`) }),
217
+ posIcon && !posIconButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-pos-icon`, children: _chunkENMDOQQOcjs.renderIcon.call(void 0, posIcon, `eidos-input-pos-icon-svg`) }),
218
218
  posIcon && posIconButton && onPosIconClick && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
219
219
  "button",
220
220
  {
@@ -223,7 +223,7 @@ var Input = _react.forwardRef.call(void 0,
223
223
  onClick: onPosIconClick,
224
224
  disabled: disabled || loading,
225
225
  "aria-label": _nullishCoalesce(posIconLabel, () => ( "Input action")),
226
- children: _chunk35LGEPLPcjs.renderIcon.call(void 0, posIcon, `eidos-input-pos-icon-svg`)
226
+ children: _chunkENMDOQQOcjs.renderIcon.call(void 0, posIcon, `eidos-input-pos-icon-svg`)
227
227
  }
228
228
  ),
229
229
  isSelect && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `eidos-input-select-chevron`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown, { className: `eidos-input-pos-icon-svg` }) })
@@ -242,4 +242,4 @@ Input.displayName = "Input";
242
242
 
243
243
 
244
244
  exports.Input = Input;
245
- //# sourceMappingURL=chunk-7VJCGKVP.cjs.map
245
+ //# sourceMappingURL=chunk-4HZIXRAJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-7VJCGKVP.cjs","../src/components/Input/Input.component.tsx"],"names":["currentValue"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACTA,8BAAmD;AACnD,2CAAyD;AA4O/C,+CAAA;AAvOH,IAAM,MAAA,EAAQ,+BAAA;AAAA,EACnB,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,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA,EAAgB,KAAA;AAAA,IAChB,cAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA,EAAO,MAAA;AAAA,IACP,EAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,EAAW,KAAA;AAAA,IACX,UAAA,EAAY,IAAA;AAAA,IACZ,UAAA,EAAY,KAAA;AAAA,IACZ,GAAG;AAAA,EACL,CAAA,EACA,GAAA,EAAA,GACG;AAIH,IAAA,MAAM,EAAE,YAAA,EAAc,GAAG,eAAe,EAAA,EAAI,UAAA;AAE5C,IAAA,MAAM,CAAC,YAAA,EAAc,eAAe,EAAA,EAAI,6BAAA,KAAc,CAAA;AACtD,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,EAAA,EAAI,6BAAA,aAAS,GAAgB,EAAE,CAAA;AAC/D,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,EAAA,EAAI,6BAAA,KAAc,CAAA;AAGhD,IAAA,MAAM,YAAA,EAAc,0BAAA,CAAM;AAC1B,IAAA,MAAM,QAAA,EAAU,GAAA,GAAM,CAAA,MAAA,EAAS,WAAW,CAAA,CAAA;AAChB,IAAA;AAGU,IAAA;AACA,IAAA;AAOA,IAAA;AAGG,IAAA;AAYb,IAAA;AAER,IAAA;AAOc,IAAA;AAC9B,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AAGwE,IAAA;AAC/C,MAAA;AACD,QAAA;AAClB,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACmC,QAAA;AACA,QAAA;AACT,QAAA;AACO,QAAA;AACG,QAAA;AAGvB,QAAA;AACc,UAAA;AACY,UAAA;AAChB,UAAA;AAGQ,UAAA;AACV,YAAA;AACjB,YAAA;AACF,UAAA;AACF,QAAA;AAGe,QAAA;AACU,UAAA;AACQA,UAAAA;AACf,UAAA;AACG,YAAA;AACjB,YAAA;AACF,UAAA;AACF,QAAA;AAEgC,QAAA;AACb,UAAA;AACnB,QAAA;AACF,MAAA;AACF,IAAA;AAGsE,IAAA;AAC7C,MAAA;AAES,MAAA;AACX,QAAA;AACrB,MAAA;AAC2B,sBAAA;AAC7B,IAAA;AAG0B,IAAA;AAEL,MAAA;AACD,QAAA;AAClB,MAAA;AAGuB,MAAA;AACb,QAAA;AACC,UAAA;AACD,UAAA;AACF,UAAA;AACE,UAAA;AACR,QAAA;AACF,MAAA;AAGwC,sBAAA;AAGF,MAAA;AAChB,QAAA;AACtB,MAAA;AACF,IAAA;AAG0B,IAAA;AACP,MAAA;AACnB,IAAA;AAEyB,IAAA;AACL,MAAA;AACpB,IAAA;AAG0C,IAAA;AAGrB,IAAA;AACnB,MAAA;AACuB,MAAA;AACF,MAAA;AACD,MAAA;AACW,MAAA;AACpB,MAAA;AACF,MAAA;AAGA,IAAA;AAEY,IAAA;AACrB,MAAA;AAC+B,MAAA;AACF,MAAA;AACD,MAAA;AACG,MAAA;AACpB,MAAA;AACE,MAAA;AACJ,MAAA;AAGA,IAAA;AAEU,IAAA;AACnB,MAAA;AACoB,MAAA;AACF,MAAA;AACT,MAAA;AAGA,IAAA;AAGT,IAAA;AAAC,MAAA;AAAA,MAAA;AACqC,QAAA;AAQd,QAAA;AAIrB,QAAA;AACE,UAAA;AACO,4BAAA;AACU,YAAA;AAEb,YAAA;AAWL,UAAA;AAGG,0BAAA;AAEA,YAAA;AAKH,4BAAA;AAAC,cAAA;AAAA,cAAA;AACC,gBAAA;AACI,gBAAA;AACE,gBAAA;AACA,gBAAA;AACK,gBAAA;AACW,gBAAA;AACX,gBAAA;AACP,gBAAA;AACyB,gBAAA;AACX,gBAAA;AACX,gBAAA;AACS,gBAAA;AACF,kBAAA;AACc,kCAAA;AAC5B,gBAAA;AACe,gBAAA;AACF,kBAAA;AACc,kCAAA;AAC3B,gBAAA;AACU,gBAAA;AAAA,cAAA;AACZ,YAAA;AAGE,YAAA;AAAC,cAAA;AAAA,cAAA;AACM,gBAAA;AACM,gBAAA;AACoB,gBAAA;AACT,gBAAA;AAGK,gBAAA;AACb,gBAAA;AAGZ,gBAAA;AAEoD,cAAA;AAExD,YAAA;AAKmB,YAAA;AAIhB,cAAA;AAAA,cAAA;AACM,gBAAA;AACM,gBAAA;AACF,gBAAA;AACa,gBAAA;AACO,gBAAA;AAE5B,gBAAA;AAA8C,cAAA;AACjD,YAAA;AAIF,YAAA;AAK2B,YAAA;AAC1B,cAAA;AAAA,cAAA;AACM,gBAAA;AACM,gBAAA;AACF,gBAAA;AACa,gBAAA;AACM,gBAAA;AAEP,gBAAA;AAA0B,cAAA;AACjD,YAAA;AAKC,YAAA;AAIL,UAAA;AAGG,UAAA;AACc,4BAAA;AACN,4BAAA;AACT,UAAA;AAAA,QAAA;AAAA,MAAA;AAEJ,IAAA;AAEJ,EAAA;AACF;AAEoB;ADtH2B;AACA;AACA;AACA","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-7VJCGKVP.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useId } from 'react';\nimport { Eye, EyeOff, CircleAlert, X, ChevronDown } from 'lucide-react';\nimport { renderIcon, fullWidthModifier, devWarn } from '../../utils';\nimport type { InputProps } from './Input.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n className = '',\n width,\n label,\n error,\n disclaimerIcon,\n disclaimerContent,\n preIcon,\n posIcon,\n posIconButton = false,\n onPosIconClick,\n posIconLabel,\n type = 'text',\n id,\n name,\n required,\n isSelect = false,\n clearable = true,\n fullWidth = false,\n ...inputProps\n },\n ref,\n ) => {\n // Extract defaultValue so it never reaches the native <input> alongside `value`.\n // Passing both causes React's \"controlled/uncontrolled\" warning because we always\n // set value={currentValue} below - defaultValue is only needed to seed local state.\n const { defaultValue, ...restInputProps } = inputProps;\n\n const [showPassword, setShowPassword] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || '');\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-generate id and name if not provided\n const generatedId = useId();\n const inputId = id || `input-${generatedId}`;\n const inputName = name || inputId;\n\n // Determine if using controlled or uncontrolled mode\n const isControlled = restInputProps.value !== undefined;\n const currentValue = isControlled ? restInputProps.value : localValue;\n\n // For select inputs, don't manage localValue - let the select component handle it\n // This prevents the Input's clear button from showing\n\n // Determine if label should float (only when there's content - static behavior)\n // For select inputs, keep label completely static (never float)\n const shouldFloatLabel = isSelect ? false : currentValue || defaultValue;\n\n // Check if field is required (from props or enhanced register function)\n const isRequired = required || Boolean('required' in restInputProps && restInputProps.required);\n\n // ── Error identification (SC 3.3.1) ───────────────────────────────\n //\n // The error was rendered as a red message next to the field and nothing\n // more: no `aria-invalid`, and no association between the two. Visually\n // obvious, entirely absent from the accessibility tree.\n //\n // `aria-describedby` is merged rather than assigned, because callers\n // pass their own - `TagInput` and `Combobox` both describe their fields\n // with hint text - and overwriting it would trade one missing\n // description for another.\n const errorId = `${inputId}-error`;\n const describedBy =\n [restInputProps['aria-describedby'], error ? errorId : null].filter(Boolean).join(' ') ||\n undefined;\n\n // An icon-only button with no name is announced as just \"button\", and\n // only the caller knows what the icon means. Warned rather than enforced\n // at the type level, which would be a breaking change - see the note on\n // `posIconLabel` in Input.types.ts.\n if (posIcon && posIconButton && onPosIconClick && !posIconLabel) {\n devWarn(\n 'input-pos-icon-label',\n 'Input: `posIconButton` renders an icon-only button, so it needs `posIconLabel` to have an accessible name. Falling back to \"Input action\".',\n );\n }\n\n // Handle number input to allow decimals and negative numbers\n const handleNumberInput = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === 'number') {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ];\n const isNumber = /[0-9]/.test(e.key);\n const isDecimal = /[.,]/.test(e.key);\n const isMinus = e.key === '-';\n const isAllowedKey = allowedKeys.includes(e.key);\n const isControlKey = e.ctrlKey || e.metaKey;\n\n // Allow minus only at the beginning or when no text is selected\n if (isMinus) {\n const selectionStart = e.currentTarget.selectionStart || 0;\n const selectionEnd = e.currentTarget.selectionEnd || 0;\n const hasSelection = selectionStart !== selectionEnd;\n\n // Allow if at beginning or if replacing selected text\n if (selectionStart !== 0 && !hasSelection) {\n e.preventDefault();\n return;\n }\n }\n\n // Allow decimal only once\n if (isDecimal) {\n const currentValue = e.currentTarget.value;\n const hasDecimal = /[.,]/.test(currentValue);\n if (hasDecimal) {\n e.preventDefault();\n return;\n }\n }\n\n if (!isNumber && !isDecimal && !isMinus && !isAllowedKey && !isControlKey) {\n e.preventDefault();\n }\n }\n };\n\n // Handle input change for number inputs\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n // Only update localValue if uncontrolled and not a select input\n if (!isControlled && !isSelect) {\n setLocalValue(value);\n }\n restInputProps.onChange?.(e);\n };\n\n // Handle clear button\n const handleClear = () => {\n // Update localValue if uncontrolled\n if (!isControlled) {\n setLocalValue('');\n }\n\n // Create a proper synthetic event for React Hook Form\n const syntheticEvent = {\n target: {\n value: '',\n name: inputName,\n id: inputId,\n type: actualType,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n // Call the form's onChange handler\n restInputProps.onChange?.(syntheticEvent);\n\n // Also try to update the input element directly\n if (ref && typeof ref === 'object' && ref.current) {\n ref.current.value = '';\n }\n };\n\n // Handle focus and blur\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Determine actual input type (handle password visibility)\n const actualType = type === 'password' ? (showPassword ? 'text' : 'password') : type;\n\n // Generate CSS classes\n const inputClasses = [\n 'eidos-input',\n `eidos-input--${variant}`,\n `eidos-input--${color}`,\n `eidos-input--${size}`,\n fullWidth && fullWidthModifier('eidos-input'),\n loading && `eidos-input--loading`,\n error && `eidos-input--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperClasses = [\n 'eidos-input-wrapper',\n `eidos-input-wrapper--${variant}`,\n `eidos-input-wrapper--${color}`,\n `eidos-input-wrapper--${size}`,\n fullWidth && fullWidthModifier('eidos-input-wrapper'),\n loading && `eidos-input-wrapper--loading`,\n isFocused && `eidos-input-wrapper--focused`,\n error && `eidos-input-wrapper--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClasses = [\n 'eidos-input-label',\n shouldFloatLabel && `eidos-input-label--floating`,\n disclaimerIcon && `eidos-input-label--with-icon`,\n error && `eidos-input-label--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={`eidos-input-container ${fullWidth ? fullWidthModifier('eidos-input-container') : ''} ${className}`}\n // `width` sizes the whole field, so it belongs on the container rather\n // than on the inner <input> (which is a `flex: 1 1 0` child of the\n // wrapper and only ever fills whatever the wrapper gives it). Applying\n // it here also keeps it a *preferred* width: `max-width: 100%` lets the\n // field shrink inside a narrower parent instead of overflowing it.\n style={\n width\n ? { width: typeof width === 'number' ? `${width}px` : width, maxWidth: '100%' }\n : undefined\n }\n >\n {label && (\n <label htmlFor={inputId} className={labelClasses}>\n <span className={`eidos-input-label-text`}>{label}</span>\n {isRequired && <span className={`eidos-input-required-asterisk`}>*</span>}\n {disclaimerIcon &&\n (disclaimerContent ? (\n <Tooltip message={disclaimerContent}>\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n </Tooltip>\n ) : (\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n ))}\n </label>\n )}\n\n <div className={wrapperClasses}>\n {preIcon && (\n <span className={`eidos-input-pre-icon`}>\n {renderIcon(preIcon, `eidos-input-pre-icon-svg`)}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n name={inputName}\n type={actualType}\n className={inputClasses}\n disabled={disabled || loading}\n onKeyDown={handleNumberInput}\n {...restInputProps}\n aria-invalid={error ? true : restInputProps['aria-invalid']}\n aria-describedby={describedBy}\n value={currentValue}\n onFocus={(e) => {\n handleFocus();\n restInputProps.onFocus?.(e);\n }}\n onBlur={(e) => {\n handleBlur();\n restInputProps.onBlur?.(e);\n }}\n onChange={handleInputChange}\n />\n\n {type === 'password' && (\n <button\n type=\"button\"\n className={`eidos-input-password-toggle`}\n onClick={() => setShowPassword(!showPassword)}\n disabled={disabled || loading}\n // The name changes with state so a screen reader announces what\n // pressing it will do, not what it just did.\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n >\n {showPassword ? (\n <EyeOff className={`eidos-input-password-toggle-icon`} />\n ) : (\n <Eye className={`eidos-input-password-toggle-icon`} />\n )}\n </button>\n )}\n\n {/* Clear button - show when there's content and clearable is enabled (default: true) */}\n {currentValue &&\n String(currentValue).trim().length > 0 &&\n type !== 'password' &&\n !isSelect &&\n clearable !== false && (\n <button\n type=\"button\"\n className={`eidos-input-clear-button`}\n onClick={handleClear}\n disabled={disabled || loading}\n aria-label={label ? `Clear ${label}` : 'Clear'}\n >\n <X className={`eidos-input-clear-button-icon`} />\n </button>\n )}\n\n {posIcon && !posIconButton && (\n <span className={`eidos-input-pos-icon`}>\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </span>\n )}\n\n {posIcon && posIconButton && onPosIconClick && (\n <button\n type=\"button\"\n className={`eidos-input-pos-icon-button`}\n onClick={onPosIconClick}\n disabled={disabled || loading}\n aria-label={posIconLabel ?? 'Input action'}\n >\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </button>\n )}\n\n {/* Chevron for select inputs */}\n {isSelect && (\n <span className={`eidos-input-select-chevron`}>\n <ChevronDown className={`eidos-input-pos-icon-svg`} />\n </span>\n )}\n </div>\n\n {error && (\n <div id={errorId} className={`eidos-input-error-message`}>\n <CircleAlert className={`eidos-input-error-icon`} />\n <span>{error}</span>\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-4HZIXRAJ.cjs","../src/components/Input/Input.component.tsx"],"names":["currentValue"],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-4HZIXRAJ.cjs","sourcesContent":[null,"import React, { forwardRef, useState, useId } from 'react';\nimport { Eye, EyeOff, CircleAlert, X, ChevronDown } from 'lucide-react';\nimport { renderIcon, fullWidthModifier, devWarn } from '../../utils';\nimport type { InputProps } from './Input.types';\nimport { Tooltip } from '../Tooltip/Tooltip.component';\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = 'filled',\n color = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n className = '',\n width,\n label,\n error,\n disclaimerIcon,\n disclaimerContent,\n preIcon,\n posIcon,\n posIconButton = false,\n onPosIconClick,\n posIconLabel,\n type = 'text',\n id,\n name,\n required,\n isSelect = false,\n clearable = true,\n fullWidth = false,\n ...inputProps\n },\n ref,\n ) => {\n // Extract defaultValue so it never reaches the native <input> alongside `value`.\n // Passing both causes React's \"controlled/uncontrolled\" warning because we always\n // set value={currentValue} below - defaultValue is only needed to seed local state.\n const { defaultValue, ...restInputProps } = inputProps;\n\n const [showPassword, setShowPassword] = useState(false);\n const [localValue, setLocalValue] = useState(defaultValue || '');\n const [isFocused, setIsFocused] = useState(false);\n\n // Auto-generate id and name if not provided\n const generatedId = useId();\n const inputId = id || `input-${generatedId}`;\n const inputName = name || inputId;\n\n // Determine if using controlled or uncontrolled mode\n const isControlled = restInputProps.value !== undefined;\n const currentValue = isControlled ? restInputProps.value : localValue;\n\n // For select inputs, don't manage localValue - let the select component handle it\n // This prevents the Input's clear button from showing\n\n // Determine if label should float (only when there's content - static behavior)\n // For select inputs, keep label completely static (never float)\n const shouldFloatLabel = isSelect ? false : currentValue || defaultValue;\n\n // Check if field is required (from props or enhanced register function)\n const isRequired = required || Boolean('required' in restInputProps && restInputProps.required);\n\n // ── Error identification (SC 3.3.1) ───────────────────────────────\n //\n // The error was rendered as a red message next to the field and nothing\n // more: no `aria-invalid`, and no association between the two. Visually\n // obvious, entirely absent from the accessibility tree.\n //\n // `aria-describedby` is merged rather than assigned, because callers\n // pass their own - `TagInput` and `Combobox` both describe their fields\n // with hint text - and overwriting it would trade one missing\n // description for another.\n const errorId = `${inputId}-error`;\n const describedBy =\n [restInputProps['aria-describedby'], error ? errorId : null].filter(Boolean).join(' ') ||\n undefined;\n\n // An icon-only button with no name is announced as just \"button\", and\n // only the caller knows what the icon means. Warned rather than enforced\n // at the type level, which would be a breaking change - see the note on\n // `posIconLabel` in Input.types.ts.\n if (posIcon && posIconButton && onPosIconClick && !posIconLabel) {\n devWarn(\n 'input-pos-icon-label',\n 'Input: `posIconButton` renders an icon-only button, so it needs `posIconLabel` to have an accessible name. Falling back to \"Input action\".',\n );\n }\n\n // Handle number input to allow decimals and negative numbers\n const handleNumberInput = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (type === 'number') {\n const allowedKeys = [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ];\n const isNumber = /[0-9]/.test(e.key);\n const isDecimal = /[.,]/.test(e.key);\n const isMinus = e.key === '-';\n const isAllowedKey = allowedKeys.includes(e.key);\n const isControlKey = e.ctrlKey || e.metaKey;\n\n // Allow minus only at the beginning or when no text is selected\n if (isMinus) {\n const selectionStart = e.currentTarget.selectionStart || 0;\n const selectionEnd = e.currentTarget.selectionEnd || 0;\n const hasSelection = selectionStart !== selectionEnd;\n\n // Allow if at beginning or if replacing selected text\n if (selectionStart !== 0 && !hasSelection) {\n e.preventDefault();\n return;\n }\n }\n\n // Allow decimal only once\n if (isDecimal) {\n const currentValue = e.currentTarget.value;\n const hasDecimal = /[.,]/.test(currentValue);\n if (hasDecimal) {\n e.preventDefault();\n return;\n }\n }\n\n if (!isNumber && !isDecimal && !isMinus && !isAllowedKey && !isControlKey) {\n e.preventDefault();\n }\n }\n };\n\n // Handle input change for number inputs\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n // Only update localValue if uncontrolled and not a select input\n if (!isControlled && !isSelect) {\n setLocalValue(value);\n }\n restInputProps.onChange?.(e);\n };\n\n // Handle clear button\n const handleClear = () => {\n // Update localValue if uncontrolled\n if (!isControlled) {\n setLocalValue('');\n }\n\n // Create a proper synthetic event for React Hook Form\n const syntheticEvent = {\n target: {\n value: '',\n name: inputName,\n id: inputId,\n type: actualType,\n },\n } as React.ChangeEvent<HTMLInputElement>;\n\n // Call the form's onChange handler\n restInputProps.onChange?.(syntheticEvent);\n\n // Also try to update the input element directly\n if (ref && typeof ref === 'object' && ref.current) {\n ref.current.value = '';\n }\n };\n\n // Handle focus and blur\n const handleFocus = () => {\n setIsFocused(true);\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Determine actual input type (handle password visibility)\n const actualType = type === 'password' ? (showPassword ? 'text' : 'password') : type;\n\n // Generate CSS classes\n const inputClasses = [\n 'eidos-input',\n `eidos-input--${variant}`,\n `eidos-input--${color}`,\n `eidos-input--${size}`,\n fullWidth && fullWidthModifier('eidos-input'),\n loading && `eidos-input--loading`,\n error && `eidos-input--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperClasses = [\n 'eidos-input-wrapper',\n `eidos-input-wrapper--${variant}`,\n `eidos-input-wrapper--${color}`,\n `eidos-input-wrapper--${size}`,\n fullWidth && fullWidthModifier('eidos-input-wrapper'),\n loading && `eidos-input-wrapper--loading`,\n isFocused && `eidos-input-wrapper--focused`,\n error && `eidos-input-wrapper--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelClasses = [\n 'eidos-input-label',\n shouldFloatLabel && `eidos-input-label--floating`,\n disclaimerIcon && `eidos-input-label--with-icon`,\n error && `eidos-input-label--error`,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={`eidos-input-container ${fullWidth ? fullWidthModifier('eidos-input-container') : ''} ${className}`}\n // `width` sizes the whole field, so it belongs on the container rather\n // than on the inner <input> (which is a `flex: 1 1 0` child of the\n // wrapper and only ever fills whatever the wrapper gives it). Applying\n // it here also keeps it a *preferred* width: `max-width: 100%` lets the\n // field shrink inside a narrower parent instead of overflowing it.\n style={\n width\n ? { width: typeof width === 'number' ? `${width}px` : width, maxWidth: '100%' }\n : undefined\n }\n >\n {label && (\n <label htmlFor={inputId} className={labelClasses}>\n <span className={`eidos-input-label-text`}>{label}</span>\n {isRequired && <span className={`eidos-input-required-asterisk`}>*</span>}\n {disclaimerIcon &&\n (disclaimerContent ? (\n <Tooltip message={disclaimerContent}>\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n </Tooltip>\n ) : (\n <span className={`eidos-input-disclaimer-icon`}>\n {renderIcon(disclaimerIcon, `eidos-input-disclaimer-icon-svg`)}\n </span>\n ))}\n </label>\n )}\n\n <div className={wrapperClasses}>\n {preIcon && (\n <span className={`eidos-input-pre-icon`}>\n {renderIcon(preIcon, `eidos-input-pre-icon-svg`)}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n name={inputName}\n type={actualType}\n className={inputClasses}\n disabled={disabled || loading}\n onKeyDown={handleNumberInput}\n {...restInputProps}\n aria-invalid={error ? true : restInputProps['aria-invalid']}\n aria-describedby={describedBy}\n value={currentValue}\n onFocus={(e) => {\n handleFocus();\n restInputProps.onFocus?.(e);\n }}\n onBlur={(e) => {\n handleBlur();\n restInputProps.onBlur?.(e);\n }}\n onChange={handleInputChange}\n />\n\n {type === 'password' && (\n <button\n type=\"button\"\n className={`eidos-input-password-toggle`}\n onClick={() => setShowPassword(!showPassword)}\n disabled={disabled || loading}\n // The name changes with state so a screen reader announces what\n // pressing it will do, not what it just did.\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n aria-pressed={showPassword}\n >\n {showPassword ? (\n <EyeOff className={`eidos-input-password-toggle-icon`} />\n ) : (\n <Eye className={`eidos-input-password-toggle-icon`} />\n )}\n </button>\n )}\n\n {/* Clear button - show when there's content and clearable is enabled (default: true) */}\n {currentValue &&\n String(currentValue).trim().length > 0 &&\n type !== 'password' &&\n !isSelect &&\n clearable !== false && (\n <button\n type=\"button\"\n className={`eidos-input-clear-button`}\n onClick={handleClear}\n disabled={disabled || loading}\n aria-label={label ? `Clear ${label}` : 'Clear'}\n >\n <X className={`eidos-input-clear-button-icon`} />\n </button>\n )}\n\n {posIcon && !posIconButton && (\n <span className={`eidos-input-pos-icon`}>\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </span>\n )}\n\n {posIcon && posIconButton && onPosIconClick && (\n <button\n type=\"button\"\n className={`eidos-input-pos-icon-button`}\n onClick={onPosIconClick}\n disabled={disabled || loading}\n aria-label={posIconLabel ?? 'Input action'}\n >\n {renderIcon(posIcon, `eidos-input-pos-icon-svg`)}\n </button>\n )}\n\n {/* Chevron for select inputs */}\n {isSelect && (\n <span className={`eidos-input-select-chevron`}>\n <ChevronDown className={`eidos-input-pos-icon-svg`} />\n </span>\n )}\n </div>\n\n {error && (\n <div id={errorId} className={`eidos-input-error-message`}>\n <CircleAlert className={`eidos-input-error-icon`} />\n <span>{error}</span>\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n"]}
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  Input
3
- } from "./chunk-YAKTVIVK.js";
3
+ } from "./chunk-XIUZT4TO.js";
4
4
  import {
5
5
  Dropdown
6
- } from "./chunk-JHX6JK3M.js";
6
+ } from "./chunk-3X6QVHTD.js";
7
7
  import {
8
8
  devWarn,
9
9
  fullWidthModifier,
10
10
  renderIcon
11
- } from "./chunk-RHHZRTWM.js";
11
+ } from "./chunk-U34INRFO.js";
12
12
 
13
13
  // src/components/Select/Select.component.tsx
14
14
  import React, { useState, useCallback, useRef, useEffect, useMemo } from "react";
@@ -354,4 +354,4 @@ Select.displayName = "Select";
354
354
  export {
355
355
  Select
356
356
  };
357
- //# sourceMappingURL=chunk-MQAOXZD4.js.map
357
+ //# sourceMappingURL=chunk-4S57PE43.js.map
@@ -5,7 +5,7 @@ import {
5
5
  FOCUSABLE_SELECTOR,
6
6
  useDialogFocus,
7
7
  useIsClient
8
- } from "./chunk-RHHZRTWM.js";
8
+ } from "./chunk-U34INRFO.js";
9
9
 
10
10
  // src/components/CommandPalette/CommandPalette.component.tsx
11
11
  import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
@@ -377,4 +377,4 @@ CommandPalette.displayName = "CommandPalette";
377
377
  export {
378
378
  CommandPalette
379
379
  };
380
- //# sourceMappingURL=chunk-JT4KVXJK.js.map
380
+ //# sourceMappingURL=chunk-4V2XYUQL.js.map
@@ -1,21 +1,21 @@
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 _chunk6JHVXWDVcjs = require('./chunk-6JHVXWDV.cjs');
3
+ var _chunkULKWUKD2cjs = require('./chunk-ULKWUKD2.cjs');
4
4
 
5
5
 
6
- var _chunkXZLSHEHEcjs = require('./chunk-XZLSHEHE.cjs');
6
+ var _chunkB2OHBIALcjs = require('./chunk-B2OHBIAL.cjs');
7
7
 
8
8
 
9
- var _chunk7VJCGKVPcjs = require('./chunk-7VJCGKVP.cjs');
9
+ var _chunk4HZIXRAJcjs = require('./chunk-4HZIXRAJ.cjs');
10
10
 
11
11
 
12
- var _chunkKIZVY57Hcjs = require('./chunk-KIZVY57H.cjs');
12
+ var _chunkVXC7Z7XBcjs = require('./chunk-VXC7Z7XB.cjs');
13
13
 
14
14
 
15
15
  var _chunk3ETWFS2Ncjs = require('./chunk-3ETWFS2N.cjs');
16
16
 
17
17
 
18
- var _chunkDA375AI6cjs = require('./chunk-DA375AI6.cjs');
18
+ var _chunkXPG56DLQcjs = require('./chunk-XPG56DLQ.cjs');
19
19
 
20
20
  // src/components/Table/TableFiltersDropdown.component.tsx
21
21
  var _react = require('react'); var _react2 = _interopRequireDefault(_react);
@@ -158,7 +158,7 @@ var TableFiltersDropdown = ({
158
158
  switch (filterType) {
159
159
  case "select":
160
160
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
161
- _chunkXZLSHEHEcjs.Select,
161
+ _chunkB2OHBIALcjs.Select,
162
162
  {
163
163
  value: row.value || "",
164
164
  onChange: (value) => updateFilter(row.id, row.columnKey, value),
@@ -174,7 +174,7 @@ var TableFiltersDropdown = ({
174
174
  );
175
175
  case "boolean":
176
176
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
177
- _chunkXZLSHEHEcjs.Select,
177
+ _chunkB2OHBIALcjs.Select,
178
178
  {
179
179
  value: row.value === void 0 ? "" : String(row.value),
180
180
  onChange: (value) => updateFilter(row.id, row.columnKey, value === "" ? void 0 : value === "true"),
@@ -238,7 +238,7 @@ var TableFiltersDropdown = ({
238
238
  }
239
239
  };
240
240
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
241
- _chunk6JHVXWDVcjs.DatePicker,
241
+ _chunkULKWUKD2cjs.DatePicker,
242
242
  {
243
243
  mode: dateMode,
244
244
  value: prepareValue(),
@@ -256,7 +256,7 @@ var TableFiltersDropdown = ({
256
256
  case "text":
257
257
  default:
258
258
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
259
- _chunk7VJCGKVPcjs.Input,
259
+ _chunk4HZIXRAJcjs.Input,
260
260
  {
261
261
  value: row.value || "",
262
262
  onChange: (e) => updateFilter(row.id, row.columnKey, e.target.value),
@@ -270,7 +270,7 @@ var TableFiltersDropdown = ({
270
270
  };
271
271
  const canAddMore = filterRows.length < filterableColumns.length;
272
272
  const triggerButton = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3ETWFS2Ncjs.Badge, { content: activeFilterCount, max: 9, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
273
- _chunkDA375AI6cjs.Button,
273
+ _chunkXPG56DLQcjs.Button,
274
274
  {
275
275
  variant: "text",
276
276
  size: "sm",
@@ -288,7 +288,7 @@ var TableFiltersDropdown = ({
288
288
  const isTemporaryFilter = row.columnKey.startsWith("__temp_");
289
289
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-table-filter-row", children: [
290
290
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-column-select", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
291
- _chunkXZLSHEHEcjs.Select,
291
+ _chunkB2OHBIALcjs.Select,
292
292
  {
293
293
  value: isTemporaryFilter ? "" : row.columnKey,
294
294
  onChange: (value) => {
@@ -305,7 +305,7 @@ var TableFiltersDropdown = ({
305
305
  }
306
306
  ) }),
307
307
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-value-input", children: column && !isTemporaryFilter ? renderFilterInput(row, column) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
308
- _chunk7VJCGKVPcjs.Input,
308
+ _chunk4HZIXRAJcjs.Input,
309
309
  {
310
310
  value: "",
311
311
  disabled: true,
@@ -316,7 +316,7 @@ var TableFiltersDropdown = ({
316
316
  }
317
317
  ) }),
318
318
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
319
- _chunkDA375AI6cjs.Button,
319
+ _chunkXPG56DLQcjs.Button,
320
320
  {
321
321
  variant: "text",
322
322
  size: "sm",
@@ -331,7 +331,7 @@ var TableFiltersDropdown = ({
331
331
  }) }),
332
332
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-table-filters-footer", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-table-filters-actions", children: [
333
333
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
334
- _chunkDA375AI6cjs.Button,
334
+ _chunkXPG56DLQcjs.Button,
335
335
  {
336
336
  variant: "text",
337
337
  size: "sm",
@@ -341,10 +341,10 @@ var TableFiltersDropdown = ({
341
341
  children: "Add Filter"
342
342
  }
343
343
  ),
344
- hasActiveFilters && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDA375AI6cjs.Button, { variant: "text", size: "sm", color: "secondary", onClick: clearAllFilters, children: "Clear All" }),
344
+ hasActiveFilters && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXPG56DLQcjs.Button, { variant: "text", size: "sm", color: "secondary", onClick: clearAllFilters, children: "Clear All" }),
345
345
  hasChanges && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-table-filters-apply-actions", children: [
346
346
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
347
- _chunkDA375AI6cjs.Button,
347
+ _chunkXPG56DLQcjs.Button,
348
348
  {
349
349
  variant: "outlined",
350
350
  size: "sm",
@@ -355,7 +355,7 @@ var TableFiltersDropdown = ({
355
355
  }
356
356
  ),
357
357
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
358
- _chunkDA375AI6cjs.Button,
358
+ _chunkXPG56DLQcjs.Button,
359
359
  {
360
360
  variant: "filled",
361
361
  size: "sm",
@@ -369,7 +369,7 @@ var TableFiltersDropdown = ({
369
369
  ] }) })
370
370
  ] });
371
371
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
372
- _chunkKIZVY57Hcjs.Dropdown,
372
+ _chunkVXC7Z7XBcjs.Dropdown,
373
373
  {
374
374
  open: isOpen,
375
375
  onOpenChange: setIsOpen,
@@ -4443,4 +4443,4 @@ function isAfter(a, b) {
4443
4443
 
4444
4444
 
4445
4445
  exports.CSS = CSS; exports.useSensor = useSensor; exports.useSensors = useSensors; exports.closestCenter = closestCenter; exports.KeyboardSensor = KeyboardSensor; exports.PointerSensor = PointerSensor; exports.DndContext = DndContext; exports.arrayMove = arrayMove; exports.horizontalListSortingStrategy = horizontalListSortingStrategy; exports.verticalListSortingStrategy = verticalListSortingStrategy; exports.SortableContext = SortableContext; exports.useSortable = useSortable; exports.sortableKeyboardCoordinates = sortableKeyboardCoordinates; exports.TableFiltersDropdown = TableFiltersDropdown;
4446
- //# sourceMappingURL=chunk-PMSENLOA.cjs.map
4446
+ //# sourceMappingURL=chunk-544RAXWO.cjs.map