eidos-ui 3.8.0 → 4.0.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 (246) hide show
  1. package/README.md +2 -2
  2. package/dist/alert/index.cjs +5 -5
  3. package/dist/alert/index.js +4 -4
  4. package/dist/button/index.cjs +4 -4
  5. package/dist/button/index.js +3 -3
  6. package/dist/chip/index.cjs +4 -4
  7. package/dist/chip/index.js +3 -3
  8. package/dist/{chunk-V5CM5TH3.js → chunk-2OBOD3GO.js} +3 -3
  9. package/dist/{chunk-CFVUUMQA.cjs → chunk-2URFSWJT.cjs} +6 -8
  10. package/dist/chunk-2URFSWJT.cjs.map +1 -0
  11. package/dist/{chunk-4S57PE43.js → chunk-2WDL2ZVP.js} +6 -7
  12. package/dist/chunk-2WDL2ZVP.js.map +1 -0
  13. package/dist/{chunk-V64DICJK.js → chunk-363IKX3C.js} +3 -3
  14. package/dist/{chunk-LWCFT5SP.cjs → chunk-3QBMSZSE.cjs} +3 -3
  15. package/dist/{chunk-LWCFT5SP.cjs.map → chunk-3QBMSZSE.cjs.map} +1 -1
  16. package/dist/{chunk-6LTZV6HN.js → chunk-43DJ3GGR.js} +19 -19
  17. package/dist/chunk-43DJ3GGR.js.map +1 -0
  18. package/dist/{chunk-L6ERHCQ2.js → chunk-57BVERWD.js} +3 -3
  19. package/dist/{chunk-AUNDBUHM.cjs → chunk-5HRVHEHE.cjs} +3 -3
  20. package/dist/{chunk-AUNDBUHM.cjs.map → chunk-5HRVHEHE.cjs.map} +1 -1
  21. package/dist/{chunk-6IB27I5K.cjs → chunk-6JYXGRJ3.cjs} +8 -8
  22. package/dist/{chunk-6IB27I5K.cjs.map → chunk-6JYXGRJ3.cjs.map} +1 -1
  23. package/dist/{chunk-NERASTO2.cjs → chunk-6ZFXIYH7.cjs} +3 -3
  24. package/dist/{chunk-NERASTO2.cjs.map → chunk-6ZFXIYH7.cjs.map} +1 -1
  25. package/dist/{chunk-IKXXXVUO.js → chunk-7TQUJ6BJ.js} +3 -3
  26. package/dist/{chunk-544RAXWO.cjs → chunk-7VMF6LIC.cjs} +19 -19
  27. package/dist/{chunk-544RAXWO.cjs.map → chunk-7VMF6LIC.cjs.map} +1 -1
  28. package/dist/{chunk-WTFEMOV5.cjs → chunk-ADB7QRX5.cjs} +16 -16
  29. package/dist/{chunk-WTFEMOV5.cjs.map → chunk-ADB7QRX5.cjs.map} +1 -1
  30. package/dist/{chunk-6CW5QSYV.cjs → chunk-AFGC62AL.cjs} +7 -7
  31. package/dist/{chunk-6CW5QSYV.cjs.map → chunk-AFGC62AL.cjs.map} +1 -1
  32. package/dist/{chunk-U4SVBE2M.js → chunk-AWPJH3UB.js} +4 -4
  33. package/dist/{chunk-B2OHBIAL.cjs → chunk-BKUZF7CW.cjs} +10 -11
  34. package/dist/chunk-BKUZF7CW.cjs.map +1 -0
  35. package/dist/{chunk-WR77IZUU.cjs → chunk-BPVOQLCA.cjs} +7 -7
  36. package/dist/{chunk-WR77IZUU.cjs.map → chunk-BPVOQLCA.cjs.map} +1 -1
  37. package/dist/{chunk-MCPGI6EI.js → chunk-BUSMGQJ4.js} +2 -2
  38. package/dist/{chunk-H3C6YECZ.js → chunk-D2PXPX56.js} +6 -6
  39. package/dist/{chunk-L6YJ6QTZ.js → chunk-DCUIT7SI.js} +2 -2
  40. package/dist/{chunk-HYRLK462.js → chunk-EDPCI2JC.js} +2 -2
  41. package/dist/{chunk-DPTTDHZ5.js → chunk-FAGQGGT3.js} +3 -3
  42. package/dist/{chunk-CNTG7OOO.js → chunk-FAXDWZQH.js} +12 -12
  43. package/dist/{chunk-7NUVLVSL.cjs → chunk-FJSK2RT7.cjs} +5 -5
  44. package/dist/{chunk-7NUVLVSL.cjs.map → chunk-FJSK2RT7.cjs.map} +1 -1
  45. package/dist/{chunk-P6OJQ2RN.js → chunk-FSX7DDLO.js} +8 -9
  46. package/dist/chunk-FSX7DDLO.js.map +1 -0
  47. package/dist/{chunk-XIUZT4TO.js → chunk-GE3QCXT7.js} +6 -7
  48. package/dist/chunk-GE3QCXT7.js.map +1 -0
  49. package/dist/{chunk-JY77VJAZ.js → chunk-GHUEVNNU.js} +3 -3
  50. package/dist/{chunk-4V2XYUQL.js → chunk-GLEPKX2R.js} +2 -2
  51. package/dist/{chunk-QUSO4GFA.cjs → chunk-GRKC4PIX.cjs} +24 -24
  52. package/dist/chunk-GRKC4PIX.cjs.map +1 -0
  53. package/dist/{chunk-SLHIVEFW.cjs → chunk-HKLLKNRQ.cjs} +6 -9
  54. package/dist/chunk-HKLLKNRQ.cjs.map +1 -0
  55. package/dist/{chunk-2TIMJD4K.js → chunk-IBT535UH.js} +3 -3
  56. package/dist/{chunk-HR5MWA3B.cjs → chunk-IJW6YCJB.cjs} +5 -5
  57. package/dist/{chunk-HR5MWA3B.cjs.map → chunk-IJW6YCJB.cjs.map} +1 -1
  58. package/dist/{chunk-NNAEQR3Y.cjs → chunk-K6VEUJLY.cjs} +30 -30
  59. package/dist/{chunk-NNAEQR3Y.cjs.map → chunk-K6VEUJLY.cjs.map} +1 -1
  60. package/dist/{chunk-F5IRMMZ2.cjs → chunk-K73JO4FK.cjs} +7 -7
  61. package/dist/{chunk-F5IRMMZ2.cjs.map → chunk-K73JO4FK.cjs.map} +1 -1
  62. package/dist/{chunk-4HZIXRAJ.cjs → chunk-KF2OGUAD.cjs} +11 -12
  63. package/dist/chunk-KF2OGUAD.cjs.map +1 -0
  64. package/dist/{chunk-TJQNGJHP.js → chunk-KLHC5BHS.js} +4 -4
  65. package/dist/{chunk-XWMXEJVZ.js → chunk-KZKBZ2AV.js} +5 -7
  66. package/dist/chunk-KZKBZ2AV.js.map +1 -0
  67. package/dist/{chunk-DG3O5NV4.cjs → chunk-LLHR6QW3.cjs} +3 -3
  68. package/dist/{chunk-DG3O5NV4.cjs.map → chunk-LLHR6QW3.cjs.map} +1 -1
  69. package/dist/{chunk-GDRLVX2A.js → chunk-LXRNFQEI.js} +4 -4
  70. package/dist/{chunk-VXC7Z7XB.cjs → chunk-MKQVDEHI.cjs} +5 -6
  71. package/dist/chunk-MKQVDEHI.cjs.map +1 -0
  72. package/dist/{chunk-TNQ2ZZ7W.cjs → chunk-MUMTPMWD.cjs} +7 -7
  73. package/dist/{chunk-TNQ2ZZ7W.cjs.map → chunk-MUMTPMWD.cjs.map} +1 -1
  74. package/dist/{chunk-RHWZX7PB.js → chunk-NONYIHXD.js} +4 -4
  75. package/dist/{chunk-XPG56DLQ.cjs → chunk-NSA7ASZ7.cjs} +8 -8
  76. package/dist/{chunk-XPG56DLQ.cjs.map → chunk-NSA7ASZ7.cjs.map} +1 -1
  77. package/dist/{chunk-6NAOAKII.js → chunk-NWFGXLQP.js} +2 -2
  78. package/dist/{chunk-HLI4SOH3.cjs → chunk-NYGRVB2J.cjs} +45 -45
  79. package/dist/{chunk-HLI4SOH3.cjs.map → chunk-NYGRVB2J.cjs.map} +1 -1
  80. package/dist/{chunk-UUT2VEN5.cjs → chunk-OC2OBBGM.cjs} +7 -8
  81. package/dist/chunk-OC2OBBGM.cjs.map +1 -0
  82. package/dist/{chunk-3X6QVHTD.js → chunk-OERK3T7E.js} +3 -4
  83. package/dist/chunk-OERK3T7E.js.map +1 -0
  84. package/dist/{chunk-ZJWQPZ7E.js → chunk-OQWG7NLI.js} +3 -11
  85. package/dist/chunk-OQWG7NLI.js.map +1 -0
  86. package/dist/{chunk-U34INRFO.js → chunk-PP6HS4GR.js} +5 -16
  87. package/dist/chunk-PP6HS4GR.js.map +1 -0
  88. package/dist/{chunk-OGGZIFTI.cjs → chunk-PVNBH7XN.cjs} +36 -36
  89. package/dist/{chunk-OGGZIFTI.cjs.map → chunk-PVNBH7XN.cjs.map} +1 -1
  90. package/dist/{chunk-H46ZLPNJ.cjs → chunk-QDZVZY53.cjs} +7 -7
  91. package/dist/{chunk-H46ZLPNJ.cjs.map → chunk-QDZVZY53.cjs.map} +1 -1
  92. package/dist/{chunk-ENMDOQQO.cjs → chunk-R5WI5IGR.cjs} +6 -17
  93. package/dist/{chunk-ENMDOQQO.cjs.map → chunk-R5WI5IGR.cjs.map} +1 -1
  94. package/dist/{chunk-UTYY35QX.cjs → chunk-RZMQCVAS.cjs} +3 -3
  95. package/dist/{chunk-UTYY35QX.cjs.map → chunk-RZMQCVAS.cjs.map} +1 -1
  96. package/dist/{chunk-7FV2X62W.cjs → chunk-SJKD3WCV.cjs} +7 -7
  97. package/dist/{chunk-7FV2X62W.cjs.map → chunk-SJKD3WCV.cjs.map} +1 -1
  98. package/dist/{chunk-LUDK44NZ.cjs → chunk-SJPCBRKR.cjs} +3 -3
  99. package/dist/{chunk-LUDK44NZ.cjs.map → chunk-SJPCBRKR.cjs.map} +1 -1
  100. package/dist/{chunk-3TF2GZSG.js → chunk-SONL2RCW.js} +7 -7
  101. package/dist/{chunk-2IXCEKLI.js → chunk-SOS4K7VC.js} +2 -2
  102. package/dist/{chunk-WHQGJHMD.js → chunk-TOLNPD7S.js} +4 -4
  103. package/dist/{chunk-FE7S4RSK.js → chunk-U5KD4BWL.js} +7 -7
  104. package/dist/{chunk-FHOD3FUN.js → chunk-UTOTOWPS.js} +4 -4
  105. package/dist/{chunk-YIOHKQ6Y.cjs → chunk-VCG647BY.cjs} +5 -13
  106. package/dist/chunk-VCG647BY.cjs.map +1 -0
  107. package/dist/{chunk-N5NXKVFJ.cjs → chunk-VPN7AR7T.cjs} +10 -10
  108. package/dist/{chunk-N5NXKVFJ.cjs.map → chunk-VPN7AR7T.cjs.map} +1 -1
  109. package/dist/{chunk-6FXFKMJ5.js → chunk-XBIMNWE6.js} +3 -3
  110. package/dist/{chunk-Z3IJWYUD.js → chunk-XOUNVK45.js} +2 -2
  111. package/dist/{chunk-3VXUOAIJ.cjs → chunk-XR72A66Q.cjs} +3 -7
  112. package/dist/chunk-XR72A66Q.cjs.map +1 -0
  113. package/dist/{chunk-ULKWUKD2.cjs → chunk-YHSCUPP6.cjs} +22 -23
  114. package/dist/chunk-YHSCUPP6.cjs.map +1 -0
  115. package/dist/{chunk-S5CMZFX6.js → chunk-YPEJH57Z.js} +6 -7
  116. package/dist/chunk-YPEJH57Z.js.map +1 -0
  117. package/dist/{chunk-BO3KK3ZQ.js → chunk-YPPG7NLW.js} +2 -6
  118. package/dist/chunk-YPPG7NLW.js.map +1 -0
  119. package/dist/{chunk-PE2SLXUS.cjs → chunk-YWXS4IPH.cjs} +5 -5
  120. package/dist/{chunk-PE2SLXUS.cjs.map → chunk-YWXS4IPH.cjs.map} +1 -1
  121. package/dist/{chunk-UC4NYF6T.js → chunk-YYA5SWXD.js} +2 -2
  122. package/dist/{chunk-JFV56ISS.cjs → chunk-YZEALKC4.cjs} +6 -6
  123. package/dist/{chunk-JFV56ISS.cjs.map → chunk-YZEALKC4.cjs.map} +1 -1
  124. package/dist/{chunk-IHPSRTVW.js → chunk-Z3OEYDNI.js} +4 -7
  125. package/dist/chunk-Z3OEYDNI.js.map +1 -0
  126. package/dist/{chunk-MKC6V3SY.cjs → chunk-Z6FZ7GI5.cjs} +6 -6
  127. package/dist/{chunk-MKC6V3SY.cjs.map → chunk-Z6FZ7GI5.cjs.map} +1 -1
  128. package/dist/{chunk-NFD7MPX4.cjs → chunk-ZVA5KJAJ.cjs} +11 -11
  129. package/dist/{chunk-NFD7MPX4.cjs.map → chunk-ZVA5KJAJ.cjs.map} +1 -1
  130. package/dist/color-picker/index.cjs +4 -4
  131. package/dist/color-picker/index.js +3 -3
  132. package/dist/combobox/index.cjs +6 -6
  133. package/dist/combobox/index.js +5 -5
  134. package/dist/command-palette/index.cjs +3 -3
  135. package/dist/command-palette/index.js +2 -2
  136. package/dist/context-menu/index.cjs +6 -6
  137. package/dist/context-menu/index.js +5 -5
  138. package/dist/conversation/index.cjs +8 -8
  139. package/dist/conversation/index.js +7 -7
  140. package/dist/data-grid/index.cjs +15 -15
  141. package/dist/data-grid/index.js +14 -14
  142. package/dist/date-picker/index.cjs +8 -8
  143. package/dist/date-picker/index.js +7 -7
  144. package/dist/drawer/index.cjs +5 -5
  145. package/dist/drawer/index.js +4 -4
  146. package/dist/dropdown/index.cjs +3 -3
  147. package/dist/dropdown/index.js +2 -2
  148. package/dist/header/index.cjs +6 -6
  149. package/dist/header/index.js +5 -5
  150. package/dist/index.cjs +38 -38
  151. package/dist/index.js +37 -37
  152. package/dist/inline-edit/index.cjs +5 -5
  153. package/dist/inline-edit/index.js +4 -4
  154. package/dist/input/index.cjs +4 -4
  155. package/dist/input/index.js +3 -3
  156. package/dist/menu/index.cjs +5 -5
  157. package/dist/menu/index.js +4 -4
  158. package/dist/modal/index.cjs +5 -5
  159. package/dist/modal/index.js +4 -4
  160. package/dist/navigation/index.cjs +5 -5
  161. package/dist/navigation/index.js +4 -4
  162. package/dist/number-input/index.cjs +2 -4
  163. package/dist/number-input/index.cjs.map +1 -1
  164. package/dist/number-input/index.js +1 -3
  165. package/dist/page-layout/index.cjs +12 -12
  166. package/dist/page-layout/index.js +11 -11
  167. package/dist/pagination/index.cjs +8 -8
  168. package/dist/pagination/index.js +7 -7
  169. package/dist/popover/index.cjs +3 -3
  170. package/dist/popover/index.d.cts +1 -3
  171. package/dist/popover/index.d.ts +1 -3
  172. package/dist/popover/index.js +2 -2
  173. package/dist/segmented-control/index.cjs +4 -4
  174. package/dist/segmented-control/index.js +3 -3
  175. package/dist/select/index.cjs +6 -6
  176. package/dist/select/index.js +5 -5
  177. package/dist/snackbar/index.cjs +5 -5
  178. package/dist/snackbar/index.js +4 -4
  179. package/dist/split-button/index.cjs +6 -6
  180. package/dist/split-button/index.js +5 -5
  181. package/dist/split-chip/index.cjs +5 -5
  182. package/dist/split-chip/index.js +4 -4
  183. package/dist/table/index.cjs +13 -13
  184. package/dist/table/index.js +12 -12
  185. package/dist/tabs/index.cjs +3 -3
  186. package/dist/tabs/index.js +2 -2
  187. package/dist/tag-input/index.cjs +6 -6
  188. package/dist/tag-input/index.js +5 -5
  189. package/dist/textarea/index.cjs +4 -4
  190. package/dist/textarea/index.js +3 -3
  191. package/dist/theme-editor/index.cjs +11 -11
  192. package/dist/theme-editor/index.js +10 -10
  193. package/dist/theme-provider/index.cjs +3 -3
  194. package/dist/theme-provider/index.js +2 -2
  195. package/dist/toolbar/index.cjs +8 -8
  196. package/dist/toolbar/index.js +7 -7
  197. package/dist/tooltip/index.cjs +3 -3
  198. package/dist/tooltip/index.js +2 -2
  199. package/package.json +4 -2
  200. package/dist/chunk-3VXUOAIJ.cjs.map +0 -1
  201. package/dist/chunk-3X6QVHTD.js.map +0 -1
  202. package/dist/chunk-4HZIXRAJ.cjs.map +0 -1
  203. package/dist/chunk-4S57PE43.js.map +0 -1
  204. package/dist/chunk-6LTZV6HN.js.map +0 -1
  205. package/dist/chunk-B2OHBIAL.cjs.map +0 -1
  206. package/dist/chunk-BO3KK3ZQ.js.map +0 -1
  207. package/dist/chunk-CFVUUMQA.cjs.map +0 -1
  208. package/dist/chunk-IHPSRTVW.js.map +0 -1
  209. package/dist/chunk-P6OJQ2RN.js.map +0 -1
  210. package/dist/chunk-QUSO4GFA.cjs.map +0 -1
  211. package/dist/chunk-S5CMZFX6.js.map +0 -1
  212. package/dist/chunk-SLHIVEFW.cjs.map +0 -1
  213. package/dist/chunk-U34INRFO.js.map +0 -1
  214. package/dist/chunk-ULKWUKD2.cjs.map +0 -1
  215. package/dist/chunk-UUT2VEN5.cjs.map +0 -1
  216. package/dist/chunk-VXC7Z7XB.cjs.map +0 -1
  217. package/dist/chunk-XIUZT4TO.js.map +0 -1
  218. package/dist/chunk-XWMXEJVZ.js.map +0 -1
  219. package/dist/chunk-YIOHKQ6Y.cjs.map +0 -1
  220. package/dist/chunk-ZJWQPZ7E.js.map +0 -1
  221. /package/dist/{chunk-V5CM5TH3.js.map → chunk-2OBOD3GO.js.map} +0 -0
  222. /package/dist/{chunk-V64DICJK.js.map → chunk-363IKX3C.js.map} +0 -0
  223. /package/dist/{chunk-L6ERHCQ2.js.map → chunk-57BVERWD.js.map} +0 -0
  224. /package/dist/{chunk-IKXXXVUO.js.map → chunk-7TQUJ6BJ.js.map} +0 -0
  225. /package/dist/{chunk-U4SVBE2M.js.map → chunk-AWPJH3UB.js.map} +0 -0
  226. /package/dist/{chunk-MCPGI6EI.js.map → chunk-BUSMGQJ4.js.map} +0 -0
  227. /package/dist/{chunk-H3C6YECZ.js.map → chunk-D2PXPX56.js.map} +0 -0
  228. /package/dist/{chunk-L6YJ6QTZ.js.map → chunk-DCUIT7SI.js.map} +0 -0
  229. /package/dist/{chunk-HYRLK462.js.map → chunk-EDPCI2JC.js.map} +0 -0
  230. /package/dist/{chunk-DPTTDHZ5.js.map → chunk-FAGQGGT3.js.map} +0 -0
  231. /package/dist/{chunk-CNTG7OOO.js.map → chunk-FAXDWZQH.js.map} +0 -0
  232. /package/dist/{chunk-JY77VJAZ.js.map → chunk-GHUEVNNU.js.map} +0 -0
  233. /package/dist/{chunk-4V2XYUQL.js.map → chunk-GLEPKX2R.js.map} +0 -0
  234. /package/dist/{chunk-2TIMJD4K.js.map → chunk-IBT535UH.js.map} +0 -0
  235. /package/dist/{chunk-TJQNGJHP.js.map → chunk-KLHC5BHS.js.map} +0 -0
  236. /package/dist/{chunk-GDRLVX2A.js.map → chunk-LXRNFQEI.js.map} +0 -0
  237. /package/dist/{chunk-RHWZX7PB.js.map → chunk-NONYIHXD.js.map} +0 -0
  238. /package/dist/{chunk-6NAOAKII.js.map → chunk-NWFGXLQP.js.map} +0 -0
  239. /package/dist/{chunk-3TF2GZSG.js.map → chunk-SONL2RCW.js.map} +0 -0
  240. /package/dist/{chunk-2IXCEKLI.js.map → chunk-SOS4K7VC.js.map} +0 -0
  241. /package/dist/{chunk-WHQGJHMD.js.map → chunk-TOLNPD7S.js.map} +0 -0
  242. /package/dist/{chunk-FE7S4RSK.js.map → chunk-U5KD4BWL.js.map} +0 -0
  243. /package/dist/{chunk-FHOD3FUN.js.map → chunk-UTOTOWPS.js.map} +0 -0
  244. /package/dist/{chunk-6FXFKMJ5.js.map → chunk-XBIMNWE6.js.map} +0 -0
  245. /package/dist/{chunk-Z3IJWYUD.js.map → chunk-XOUNVK45.js.map} +0 -0
  246. /package/dist/{chunk-UC4NYF6T.js.map → chunk-YYA5SWXD.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkB2OHBIALcjs = require('./chunk-B2OHBIAL.cjs');
3
+ var _chunkBKUZF7CWcjs = require('./chunk-BKUZF7CW.cjs');
4
4
 
5
5
 
6
- var _chunkXPG56DLQcjs = require('./chunk-XPG56DLQ.cjs');
6
+ var _chunkNSA7ASZ7cjs = require('./chunk-NSA7ASZ7.cjs');
7
7
 
8
8
  // src/components/Pagination/Pagination.component.tsx
9
9
  var _react = require('react');
@@ -79,7 +79,7 @@ var Pagination = ({
79
79
  ].filter(Boolean).join(" ");
80
80
  const nav = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { "aria-label": "Pagination", className: "eidos-pagination-nav", children: [
81
81
  showFirstLast && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
82
- _chunkXPG56DLQcjs.Button,
82
+ _chunkNSA7ASZ7cjs.Button,
83
83
  {
84
84
  variant: "text",
85
85
  size,
@@ -90,7 +90,7 @@ var Pagination = ({
90
90
  }
91
91
  ),
92
92
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
93
- _chunkXPG56DLQcjs.Button,
93
+ _chunkNSA7ASZ7cjs.Button,
94
94
  {
95
95
  variant: "text",
96
96
  size,
@@ -146,7 +146,7 @@ var Pagination = ({
146
146
  )
147
147
  ),
148
148
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
149
- _chunkXPG56DLQcjs.Button,
149
+ _chunkNSA7ASZ7cjs.Button,
150
150
  {
151
151
  variant: "text",
152
152
  size,
@@ -157,7 +157,7 @@ var Pagination = ({
157
157
  }
158
158
  ),
159
159
  showFirstLast && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
160
- _chunkXPG56DLQcjs.Button,
160
+ _chunkNSA7ASZ7cjs.Button,
161
161
  {
162
162
  variant: "text",
163
163
  size,
@@ -185,7 +185,7 @@ var Pagination = ({
185
185
  hasPageSize && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "eidos-pagination-size", children: [
186
186
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { className: "eidos-pagination-size-label", htmlFor: pageSizeId, children: "Show:" }),
187
187
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
188
- _chunkB2OHBIALcjs.Select,
188
+ _chunkBKUZF7CWcjs.Select,
189
189
  {
190
190
  value: String(pageSize),
191
191
  onChange: (val) => onPageSizeChange(Number(val)),
@@ -209,4 +209,4 @@ Pagination.displayName = "Pagination";
209
209
 
210
210
 
211
211
  exports.Pagination = Pagination;
212
- //# sourceMappingURL=chunk-6IB27I5K.cjs.map
212
+ //# sourceMappingURL=chunk-6JYXGRJ3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6IB27I5K.cjs","../src/components/Pagination/Pagination.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6IB27I5K.cjs","sourcesContent":[null,"import React, { useState, useEffect, useId } from 'react';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport type { PaginationProps } from './Pagination.types';\n\n// ── Ellipsis range helper ─────────────────────────────────────────────────────\n\nconst ELLIPSIS = 'ellipsis' as const;\ntype PageItem = number | typeof ELLIPSIS;\n\nfunction usePaginationRange(page: number, totalPages: number, siblingCount: number): PageItem[] {\n const totalShown = siblingCount * 2 + 5;\n\n if (totalPages <= totalShown) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(page - siblingCount, 1);\n const rightSibling = Math.min(page + siblingCount, totalPages);\n\n const showLeftEllipsis = leftSibling > 2;\n const showRightEllipsis = rightSibling < totalPages - 1;\n\n const items: PageItem[] = [1];\n\n if (showLeftEllipsis) {\n items.push(ELLIPSIS);\n } else {\n for (let i = 2; i < leftSibling; i++) items.push(i);\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n if (i !== 1 && i !== totalPages) items.push(i);\n }\n\n if (showRightEllipsis) {\n items.push(ELLIPSIS);\n } else {\n for (let i = rightSibling + 1; i < totalPages; i++) items.push(i);\n }\n\n items.push(totalPages);\n\n return items;\n}\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Pagination: React.FC<PaginationProps> = ({\n page,\n totalPages,\n onChange,\n siblingCount = 1,\n showFirstLast = false,\n color = 'primary',\n size = 'sm',\n disabled = false,\n className = '',\n // Table-footer mode\n totalItems,\n pageSize,\n onPageSizeChange,\n pageSizeOptions = [10, 25, 50, 100],\n}) => {\n const pageSizeId = useId();\n const items = usePaginationRange(page, totalPages, siblingCount);\n\n // ── Active-page editable input ─────────────────────────────────────────────\n const [inputValue, setInputValue] = useState(String(page));\n useEffect(() => {\n setInputValue(String(page));\n }, [page]);\n\n const commitInput = (raw: string) => {\n const val = parseInt(raw, 10);\n if (!isNaN(val) && val >= 1 && val <= totalPages && val !== page) {\n onChange(val);\n } else {\n setInputValue(String(page)); // revert on invalid or same-page\n }\n };\n\n // ── Layout flags ───────────────────────────────────────────────────────────\n const hasResults = totalItems !== undefined && pageSize !== undefined;\n const hasPageSize = !!onPageSizeChange && pageSize !== undefined;\n const tableMode = hasResults || hasPageSize;\n\n const startItem = hasResults ? (totalItems === 0 ? 0 : (page - 1) * pageSize! + 1) : undefined;\n const endItem = hasResults ? Math.min(page * pageSize!, totalItems!) : undefined;\n\n const rootClasses = [\n 'eidos-pagination',\n `eidos-pagination--${size}`,\n tableMode && 'eidos-pagination--table',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // ── Navigation block ───────────────────────────────────────────────────────\n const nav = (\n <nav aria-label=\"Pagination\" className=\"eidos-pagination-nav\">\n {showFirstLast && (\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronsLeft}\n disabled={page === 1 || disabled}\n onClick={() => onChange(1)}\n aria-label=\"First page\"\n />\n )}\n\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronLeft}\n disabled={page === 1 || disabled}\n onClick={() => onChange(page - 1)}\n aria-label=\"Previous page\"\n />\n\n {items.map((item, i) =>\n item === ELLIPSIS ? (\n <span key={`ellipsis-${i}`} className=\"eidos-pagination-ellipsis\" aria-hidden=\"true\">\n …\n </span>\n ) : item === page ? (\n // Active page - styled as filled chip, editable via keyboard/click\n <input\n key=\"active-page\"\n type=\"text\"\n inputMode=\"numeric\"\n className={[\n 'eidos-pagination-page',\n 'eidos-pagination-page--active',\n `eidos-pagination-page--${color}`,\n ].join(' ')}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={(e) => e.target.select()}\n onBlur={() => commitInput(inputValue)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n commitInput(inputValue);\n e.currentTarget.blur();\n } else if (e.key === 'Escape') {\n setInputValue(String(page));\n e.currentTarget.blur();\n }\n }}\n aria-label={`Page ${page} of ${totalPages}, editable`}\n aria-current=\"page\"\n disabled={disabled}\n />\n ) : (\n <button\n key={item}\n type=\"button\"\n className=\"eidos-pagination-page\"\n onClick={() => onChange(item)}\n disabled={disabled}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n ),\n )}\n\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronRight}\n disabled={page === totalPages || disabled}\n onClick={() => onChange(page + 1)}\n aria-label=\"Next page\"\n />\n\n {showFirstLast && (\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronsRight}\n disabled={page === totalPages || disabled}\n onClick={() => onChange(totalPages)}\n aria-label=\"Last page\"\n />\n )}\n </nav>\n );\n\n // ── Standalone mode ────────────────────────────────────────────────────────\n if (!tableMode) {\n return <div className={rootClasses}>{nav}</div>;\n }\n\n // ── Table-footer mode ──────────────────────────────────────────────────────\n return (\n <div className={rootClasses}>\n {hasResults && (\n <span className=\"eidos-pagination-info\">\n Showing {startItem}-{endItem} of {totalItems} results\n </span>\n )}\n\n <div className=\"eidos-pagination-controls\">\n {hasPageSize && (\n <div className=\"eidos-pagination-size\">\n <label className=\"eidos-pagination-size-label\" htmlFor={pageSizeId}>\n Show:\n </label>\n <Select\n value={String(pageSize)}\n onChange={(val) => onPageSizeChange(Number(val))}\n options={pageSizeOptions.map((n) => ({\n id: String(n),\n value: String(n),\n label: String(n),\n }))}\n clearable={false}\n disabled={disabled}\n // Sizes the whole field, chevron and padding included - wide\n // enough for a 3-digit page size. `'3ch'` used to work here only\n // because `Input.width` sized the inner <input> and let the\n // chrome overflow it; now that it sizes the field, 3ch left no\n // room for the value at all.\n // Associated with the visible \"Show:\" label above rather\n // than given an `aria-label`. The `<label>` was real but had no\n // `htmlFor`, so it named nothing; an `aria-label` would have\n // worked for axe while risking SC 2.5.3 Label in Name, since\n // the spoken name would no longer contain the visible text.\n inputProps={{ size: 'sm', width: 72, id: pageSizeId }}\n />\n </div>\n )}\n\n {totalPages > 1 && nav}\n </div>\n </div>\n );\n};\n\nPagination.displayName = 'Pagination';\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6JYXGRJ3.cjs","../src/components/Pagination/Pagination.component.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6JYXGRJ3.cjs","sourcesContent":[null,"import React, { useState, useEffect, useId } from 'react';\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport { Button } from '../Button';\nimport { Select } from '../Select';\nimport type { PaginationProps } from './Pagination.types';\n\n// ── Ellipsis range helper ─────────────────────────────────────────────────────\n\nconst ELLIPSIS = 'ellipsis' as const;\ntype PageItem = number | typeof ELLIPSIS;\n\nfunction usePaginationRange(page: number, totalPages: number, siblingCount: number): PageItem[] {\n const totalShown = siblingCount * 2 + 5;\n\n if (totalPages <= totalShown) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const leftSibling = Math.max(page - siblingCount, 1);\n const rightSibling = Math.min(page + siblingCount, totalPages);\n\n const showLeftEllipsis = leftSibling > 2;\n const showRightEllipsis = rightSibling < totalPages - 1;\n\n const items: PageItem[] = [1];\n\n if (showLeftEllipsis) {\n items.push(ELLIPSIS);\n } else {\n for (let i = 2; i < leftSibling; i++) items.push(i);\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n if (i !== 1 && i !== totalPages) items.push(i);\n }\n\n if (showRightEllipsis) {\n items.push(ELLIPSIS);\n } else {\n for (let i = rightSibling + 1; i < totalPages; i++) items.push(i);\n }\n\n items.push(totalPages);\n\n return items;\n}\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Pagination: React.FC<PaginationProps> = ({\n page,\n totalPages,\n onChange,\n siblingCount = 1,\n showFirstLast = false,\n color = 'primary',\n size = 'sm',\n disabled = false,\n className = '',\n // Table-footer mode\n totalItems,\n pageSize,\n onPageSizeChange,\n pageSizeOptions = [10, 25, 50, 100],\n}) => {\n const pageSizeId = useId();\n const items = usePaginationRange(page, totalPages, siblingCount);\n\n // ── Active-page editable input ─────────────────────────────────────────────\n const [inputValue, setInputValue] = useState(String(page));\n useEffect(() => {\n setInputValue(String(page));\n }, [page]);\n\n const commitInput = (raw: string) => {\n const val = parseInt(raw, 10);\n if (!isNaN(val) && val >= 1 && val <= totalPages && val !== page) {\n onChange(val);\n } else {\n setInputValue(String(page)); // revert on invalid or same-page\n }\n };\n\n // ── Layout flags ───────────────────────────────────────────────────────────\n const hasResults = totalItems !== undefined && pageSize !== undefined;\n const hasPageSize = !!onPageSizeChange && pageSize !== undefined;\n const tableMode = hasResults || hasPageSize;\n\n const startItem = hasResults ? (totalItems === 0 ? 0 : (page - 1) * pageSize! + 1) : undefined;\n const endItem = hasResults ? Math.min(page * pageSize!, totalItems!) : undefined;\n\n const rootClasses = [\n 'eidos-pagination',\n `eidos-pagination--${size}`,\n tableMode && 'eidos-pagination--table',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // ── Navigation block ───────────────────────────────────────────────────────\n const nav = (\n <nav aria-label=\"Pagination\" className=\"eidos-pagination-nav\">\n {showFirstLast && (\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronsLeft}\n disabled={page === 1 || disabled}\n onClick={() => onChange(1)}\n aria-label=\"First page\"\n />\n )}\n\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronLeft}\n disabled={page === 1 || disabled}\n onClick={() => onChange(page - 1)}\n aria-label=\"Previous page\"\n />\n\n {items.map((item, i) =>\n item === ELLIPSIS ? (\n <span key={`ellipsis-${i}`} className=\"eidos-pagination-ellipsis\" aria-hidden=\"true\">\n …\n </span>\n ) : item === page ? (\n // Active page - styled as filled chip, editable via keyboard/click\n <input\n key=\"active-page\"\n type=\"text\"\n inputMode=\"numeric\"\n className={[\n 'eidos-pagination-page',\n 'eidos-pagination-page--active',\n `eidos-pagination-page--${color}`,\n ].join(' ')}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onFocus={(e) => e.target.select()}\n onBlur={() => commitInput(inputValue)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n commitInput(inputValue);\n e.currentTarget.blur();\n } else if (e.key === 'Escape') {\n setInputValue(String(page));\n e.currentTarget.blur();\n }\n }}\n aria-label={`Page ${page} of ${totalPages}, editable`}\n aria-current=\"page\"\n disabled={disabled}\n />\n ) : (\n <button\n key={item}\n type=\"button\"\n className=\"eidos-pagination-page\"\n onClick={() => onChange(item)}\n disabled={disabled}\n aria-label={`Page ${item}`}\n >\n {item}\n </button>\n ),\n )}\n\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronRight}\n disabled={page === totalPages || disabled}\n onClick={() => onChange(page + 1)}\n aria-label=\"Next page\"\n />\n\n {showFirstLast && (\n <Button\n variant=\"text\"\n size={size}\n icon={ChevronsRight}\n disabled={page === totalPages || disabled}\n onClick={() => onChange(totalPages)}\n aria-label=\"Last page\"\n />\n )}\n </nav>\n );\n\n // ── Standalone mode ────────────────────────────────────────────────────────\n if (!tableMode) {\n return <div className={rootClasses}>{nav}</div>;\n }\n\n // ── Table-footer mode ──────────────────────────────────────────────────────\n return (\n <div className={rootClasses}>\n {hasResults && (\n <span className=\"eidos-pagination-info\">\n Showing {startItem}-{endItem} of {totalItems} results\n </span>\n )}\n\n <div className=\"eidos-pagination-controls\">\n {hasPageSize && (\n <div className=\"eidos-pagination-size\">\n <label className=\"eidos-pagination-size-label\" htmlFor={pageSizeId}>\n Show:\n </label>\n <Select\n value={String(pageSize)}\n onChange={(val) => onPageSizeChange(Number(val))}\n options={pageSizeOptions.map((n) => ({\n id: String(n),\n value: String(n),\n label: String(n),\n }))}\n clearable={false}\n disabled={disabled}\n // Sizes the whole field, chevron and padding included - wide\n // enough for a 3-digit page size. `'3ch'` used to work here only\n // because `Input.width` sized the inner <input> and let the\n // chrome overflow it; now that it sizes the field, 3ch left no\n // room for the value at all.\n // Associated with the visible \"Show:\" label above rather\n // than given an `aria-label`. The `<label>` was real but had no\n // `htmlFor`, so it named nothing; an `aria-label` would have\n // worked for axe while risking SC 2.5.3 Label in Name, since\n // the spoken name would no longer contain the visible text.\n inputProps={{ size: 'sm', width: 72, id: pageSizeId }}\n />\n </div>\n )}\n\n {totalPages > 1 && nav}\n </div>\n </div>\n );\n};\n\nPagination.displayName = 'Pagination';\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkXPG56DLQcjs = require('./chunk-XPG56DLQ.cjs');
3
+ var _chunkNSA7ASZ7cjs = require('./chunk-NSA7ASZ7.cjs');
4
4
 
5
5
  // src/components/Snackbar/Snackbar.context.tsx
6
6
  var _react = require('react');
@@ -163,7 +163,7 @@ var SnackbarComponent = ({ snackbar, onClose }) => {
163
163
  children: [
164
164
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-snackbar-content", children: renderContent() }),
165
165
  action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "eidos-snackbar-actions", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
166
- _chunkXPG56DLQcjs.Button,
166
+ _chunkNSA7ASZ7cjs.Button,
167
167
  {
168
168
  variant: action.variant === "primary" ? "filled" : "text",
169
169
  size: "sm",
@@ -293,4 +293,4 @@ var useSnackbar = () => {
293
293
 
294
294
 
295
295
  exports.useSnackbarContext = useSnackbarContext; exports.SnackbarProvider = SnackbarProvider; exports.SnackbarContainer = SnackbarContainer; exports.useSnackbar = useSnackbar;
296
- //# sourceMappingURL=chunk-NERASTO2.cjs.map
296
+ //# sourceMappingURL=chunk-6ZFXIYH7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-NERASTO2.cjs","../src/components/Snackbar/Snackbar.context.tsx","../src/components/Snackbar/SnackbarContainer.component.tsx","../src/components/Snackbar/Snackbar.component.tsx","../src/components/Snackbar/Snackbar.hooks.ts"],"names":["jsx","useCallback"],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-NERASTO2.cjs","sourcesContent":[null,"import React, { createContext, useContext, useState, useCallback, useRef } from 'react';\nimport type { SnackbarContextValue, SnackbarItem, SnackbarProps } from './Snackbar.types';\n\nconst SnackbarContext = createContext<SnackbarContextValue | undefined>(undefined);\n\nexport const useSnackbarContext = (): SnackbarContextValue => {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error('useSnackbarContext must be used within a SnackbarProvider');\n }\n return context;\n};\n\ninterface SnackbarProviderProps {\n children: React.ReactNode;\n}\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({ children }) => {\n const [snackbars, setSnackbars] = useState<SnackbarItem[]>([]);\n // Mirror state in a ref so removeSnackbar can read current items synchronously\n // without placing side-effects inside a setState updater (which StrictMode calls twice).\n const snackbarsRef = useRef<SnackbarItem[]>([]);\n snackbarsRef.current = snackbars;\n\n // ── Pausable auto-dismiss timers (SC 2.2.1 Timing Adjustable) ─────────────\n //\n // Auto-dismiss used to be a bare `setTimeout` that nothing could stop. That\n // is a Level A failure: a time limit the user can neither turn off, adjust\n // nor extend. It bites hardest exactly where a snackbar is most useful -\n // `action` puts a control (typically \"Undo\") inside something that deletes\n // itself on a stopwatch, so anyone reading slowly, using a screen reader,\n // or driving by keyboard can lose it mid-reach.\n //\n // Each timer therefore records when it started and how long is left, so it\n // can be cancelled on hover or focus and restarted with the remainder.\n const timers = useRef(\n new Map<string, { timeout: number; remaining: number; startedAt: number }>(),\n );\n\n const clearTimer = useCallback((id: string): void => {\n const timer = timers.current.get(id);\n if (timer) {\n window.clearTimeout(timer.timeout);\n timers.current.delete(id);\n }\n }, []);\n\n // `startTimer` needs `removeSnackbar`, and `removeSnackbar` needs\n // `clearTimer`. A ref breaks the cycle without reordering the file or\n // making every callback depend on the others' identity.\n const removeSnackbarRef = useRef<(id: string) => void>(() => {});\n\n const generateId = useCallback((): string => {\n return `snackbar-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }, []);\n\n const removeSnackbar = useCallback(\n (id: string): void => {\n // Read from ref - safe to call outside a setState updater.\n // Calling side-effects inside a setState updater is wrong: React StrictMode\n // deliberately invokes updaters twice, which would fire onClose 2× from here\n // plus 1× from SnackbarComponent.handleClose = 3× total.\n clearTimer(id);\n\n const snackbar = snackbarsRef.current.find((item) => item.id === id);\n if (snackbar?.onClose) {\n snackbar.onClose(id);\n }\n\n // Transition to exiting state, then remove after the CSS animation (300ms).\n setSnackbars((prev) =>\n prev.map((item) => (item.id === id ? { ...item, state: 'exiting' } : item)),\n );\n\n setTimeout(() => {\n setSnackbars((prev) => prev.filter((item) => item.id !== id));\n }, 300);\n },\n [clearTimer],\n );\n\n const startTimer = useCallback(\n (id: string, ms: number): void => {\n clearTimer(id);\n timers.current.set(id, {\n timeout: window.setTimeout(() => removeSnackbarRef.current(id), ms),\n remaining: ms,\n startedAt: Date.now(),\n });\n },\n [clearTimer],\n );\n\n const addSnackbar = useCallback(\n (snackbar: Omit<SnackbarProps, 'id'>): string => {\n const id = generateId();\n const newSnackbar: SnackbarItem = {\n ...snackbar,\n id,\n state: 'entering',\n createdAt: Date.now(),\n };\n\n setSnackbars((prev) => [newSnackbar, ...prev]); // Add to beginning (newest on top)\n\n // Use requestAnimationFrame to ensure DOM is rendered before animation\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setSnackbars((prev) =>\n prev.map((item) => (item.id === id ? { ...item, state: 'entered' } : item)),\n );\n });\n });\n\n // Auto-close if duration is set\n if (snackbar.duration && snackbar.duration > 0) {\n startTimer(id, snackbar.duration);\n }\n\n return id;\n },\n [generateId, startTimer],\n );\n\n // Pause on hover or focus, resume on leave or blur. Wired up by\n // `SnackbarContainer` - see the handlers there.\n const pauseSnackbar = useCallback((id: string): void => {\n const timer = timers.current.get(id);\n if (!timer) return;\n window.clearTimeout(timer.timeout);\n timers.current.set(id, {\n ...timer,\n // What is left of the countdown at the moment of pausing, floored at 0\n // so a timer that was already due does not resume with a negative delay.\n remaining: Math.max(0, timer.remaining - (Date.now() - timer.startedAt)),\n });\n }, []);\n\n const resumeSnackbar = useCallback(\n (id: string): void => {\n const timer = timers.current.get(id);\n if (!timer) return;\n startTimer(id, timer.remaining);\n },\n [startTimer],\n );\n\n removeSnackbarRef.current = removeSnackbar;\n\n const clearAllSnackbars = useCallback((): void => {\n // Transition all to exiting state\n setSnackbars((prev) => prev.map((item) => ({ ...item, state: 'exiting' })));\n\n // Remove all after animation completes (300ms to match CSS animation)\n setTimeout(() => {\n setSnackbars([]);\n }, 300);\n }, []);\n\n const contextValue: SnackbarContextValue = {\n snackbars,\n addSnackbar,\n removeSnackbar,\n clearAllSnackbars,\n pauseSnackbar,\n resumeSnackbar,\n };\n\n return <SnackbarContext.Provider value={contextValue}>{children}</SnackbarContext.Provider>;\n};\n\nSnackbarProvider.displayName = 'SnackbarProvider';\n","import React from 'react';\nimport { createPortal } from 'react-dom';\nimport { useSnackbarContext } from './Snackbar.context';\nimport { SnackbarComponent } from './Snackbar.component';\n\nexport const SnackbarContainer: React.FC = () => {\n const { snackbars, removeSnackbar, pauseSnackbar, resumeSnackbar } = useSnackbarContext();\n\n if (snackbars.length === 0) {\n return null;\n }\n\n return createPortal(\n <div className={'eidos-snackbar-container'}>\n {snackbars.map((snackbar) => (\n <div\n key={snackbar.id}\n className={'eidos-snackbar-wrapper'}\n // Holds the auto-dismiss countdown while the user is engaged with\n // this snackbar, which is what makes the time limit adjustable\n // (SC 2.2.1). Hover covers reading it; focus covers reaching its\n // action by keyboard - `onFocus`/`onBlur` bubble in React, so a\n // focused \"Undo\" button inside pauses the whole snackbar.\n onMouseEnter={() => pauseSnackbar(snackbar.id)}\n onMouseLeave={() => resumeSnackbar(snackbar.id)}\n onFocus={() => pauseSnackbar(snackbar.id)}\n onBlur={() => resumeSnackbar(snackbar.id)}\n >\n <SnackbarComponent snackbar={snackbar} onClose={removeSnackbar} />\n </div>\n ))}\n </div>,\n document.body,\n );\n};\n\nSnackbarContainer.displayName = 'SnackbarContainer';\n","import React from 'react';\nimport { X } from 'lucide-react';\nimport { Button } from '../Button/Button.component';\nimport type { SnackbarItem } from './Snackbar.types';\n\ninterface SnackbarComponentProps {\n snackbar: SnackbarItem;\n onClose: (id: string) => void;\n}\n\nexport const SnackbarComponent: React.FC<SnackbarComponentProps> = ({ snackbar, onClose }) => {\n const {\n id,\n variant = 'info',\n message,\n component: Component,\n componentProps,\n action,\n state,\n } = snackbar;\n\n const handleClose = () => {\n // onClose callback is fired by removeSnackbar (context) to cover both\n // manual and auto-close paths without duplication.\n onClose(id);\n };\n\n const handleActionClick = () => {\n if (action?.onClick) {\n action.onClick();\n }\n };\n\n // Render content based on type\n const renderContent = () => {\n if (message) {\n return <span className={'eidos-snackbar-message'}>{message}</span>;\n }\n if (Component) {\n return <Component {...(componentProps || {})} />;\n }\n return null;\n };\n\n return (\n <div\n className={`eidos-snackbar eidos-snackbar--${variant} eidos-snackbar--${state} ${snackbar.className || ''}`}\n role=\"alert\"\n aria-live=\"polite\"\n >\n <div className={'eidos-snackbar-content'}>{renderContent()}</div>\n\n {action && (\n <div className={'eidos-snackbar-actions'}>\n <Button\n variant={action.variant === 'primary' ? 'filled' : 'text'}\n size=\"sm\"\n onClick={handleActionClick}\n className={'eidos-snackbar-action-button'}\n >\n {action.label}\n </Button>\n </div>\n )}\n\n <button\n className={'eidos-snackbar-close-button'}\n onClick={handleClose}\n aria-label=\"Close notification\"\n type=\"button\"\n >\n <X className={'eidos-snackbar-close-icon'} />\n </button>\n </div>\n );\n};\n\nSnackbarComponent.displayName = 'SnackbarComponent';\n","import { useCallback } from 'react';\nimport { useSnackbarContext } from './Snackbar.context';\nimport type { UseSnackbarReturn, SnackbarProps } from './Snackbar.types';\n\nexport const useSnackbar = (): UseSnackbarReturn => {\n const { addSnackbar, removeSnackbar, clearAllSnackbars } = useSnackbarContext();\n\n const showSnackbar = useCallback(\n (snackbar: Omit<SnackbarProps, 'id'>): string => {\n return addSnackbar(snackbar);\n },\n [addSnackbar],\n );\n\n const hideSnackbar = useCallback(\n (id: string): void => {\n removeSnackbar(id);\n },\n [removeSnackbar],\n );\n\n const clearAll = useCallback((): void => {\n clearAllSnackbars();\n }, [clearAllSnackbars]);\n\n const showSuccess = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'success',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showError = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'danger',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showWarning = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'warning',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showInfo = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'info',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n return {\n showSnackbar,\n hideSnackbar,\n clearAll,\n showSuccess,\n showError,\n showWarning,\n showInfo,\n };\n};\n\nexport default useSnackbar;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6ZFXIYH7.cjs","../src/components/Snackbar/Snackbar.context.tsx","../src/components/Snackbar/SnackbarContainer.component.tsx","../src/components/Snackbar/Snackbar.component.tsx","../src/components/Snackbar/Snackbar.hooks.ts"],"names":["jsx","useCallback"],"mappings":"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","file":"/home/runner/work/eidos-ui/eidos-ui/dist/chunk-6ZFXIYH7.cjs","sourcesContent":[null,"import React, { createContext, useContext, useState, useCallback, useRef } from 'react';\nimport type { SnackbarContextValue, SnackbarItem, SnackbarProps } from './Snackbar.types';\n\nconst SnackbarContext = createContext<SnackbarContextValue | undefined>(undefined);\n\nexport const useSnackbarContext = (): SnackbarContextValue => {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error('useSnackbarContext must be used within a SnackbarProvider');\n }\n return context;\n};\n\ninterface SnackbarProviderProps {\n children: React.ReactNode;\n}\n\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({ children }) => {\n const [snackbars, setSnackbars] = useState<SnackbarItem[]>([]);\n // Mirror state in a ref so removeSnackbar can read current items synchronously\n // without placing side-effects inside a setState updater (which StrictMode calls twice).\n const snackbarsRef = useRef<SnackbarItem[]>([]);\n snackbarsRef.current = snackbars;\n\n // ── Pausable auto-dismiss timers (SC 2.2.1 Timing Adjustable) ─────────────\n //\n // Auto-dismiss used to be a bare `setTimeout` that nothing could stop. That\n // is a Level A failure: a time limit the user can neither turn off, adjust\n // nor extend. It bites hardest exactly where a snackbar is most useful -\n // `action` puts a control (typically \"Undo\") inside something that deletes\n // itself on a stopwatch, so anyone reading slowly, using a screen reader,\n // or driving by keyboard can lose it mid-reach.\n //\n // Each timer therefore records when it started and how long is left, so it\n // can be cancelled on hover or focus and restarted with the remainder.\n const timers = useRef(\n new Map<string, { timeout: number; remaining: number; startedAt: number }>(),\n );\n\n const clearTimer = useCallback((id: string): void => {\n const timer = timers.current.get(id);\n if (timer) {\n window.clearTimeout(timer.timeout);\n timers.current.delete(id);\n }\n }, []);\n\n // `startTimer` needs `removeSnackbar`, and `removeSnackbar` needs\n // `clearTimer`. A ref breaks the cycle without reordering the file or\n // making every callback depend on the others' identity.\n const removeSnackbarRef = useRef<(id: string) => void>(() => {});\n\n const generateId = useCallback((): string => {\n return `snackbar-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }, []);\n\n const removeSnackbar = useCallback(\n (id: string): void => {\n // Read from ref - safe to call outside a setState updater.\n // Calling side-effects inside a setState updater is wrong: React StrictMode\n // deliberately invokes updaters twice, which would fire onClose 2× from here\n // plus 1× from SnackbarComponent.handleClose = 3× total.\n clearTimer(id);\n\n const snackbar = snackbarsRef.current.find((item) => item.id === id);\n if (snackbar?.onClose) {\n snackbar.onClose(id);\n }\n\n // Transition to exiting state, then remove after the CSS animation (300ms).\n setSnackbars((prev) =>\n prev.map((item) => (item.id === id ? { ...item, state: 'exiting' } : item)),\n );\n\n setTimeout(() => {\n setSnackbars((prev) => prev.filter((item) => item.id !== id));\n }, 300);\n },\n [clearTimer],\n );\n\n const startTimer = useCallback(\n (id: string, ms: number): void => {\n clearTimer(id);\n timers.current.set(id, {\n timeout: window.setTimeout(() => removeSnackbarRef.current(id), ms),\n remaining: ms,\n startedAt: Date.now(),\n });\n },\n [clearTimer],\n );\n\n const addSnackbar = useCallback(\n (snackbar: Omit<SnackbarProps, 'id'>): string => {\n const id = generateId();\n const newSnackbar: SnackbarItem = {\n ...snackbar,\n id,\n state: 'entering',\n createdAt: Date.now(),\n };\n\n setSnackbars((prev) => [newSnackbar, ...prev]); // Add to beginning (newest on top)\n\n // Use requestAnimationFrame to ensure DOM is rendered before animation\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setSnackbars((prev) =>\n prev.map((item) => (item.id === id ? { ...item, state: 'entered' } : item)),\n );\n });\n });\n\n // Auto-close if duration is set\n if (snackbar.duration && snackbar.duration > 0) {\n startTimer(id, snackbar.duration);\n }\n\n return id;\n },\n [generateId, startTimer],\n );\n\n // Pause on hover or focus, resume on leave or blur. Wired up by\n // `SnackbarContainer` - see the handlers there.\n const pauseSnackbar = useCallback((id: string): void => {\n const timer = timers.current.get(id);\n if (!timer) return;\n window.clearTimeout(timer.timeout);\n timers.current.set(id, {\n ...timer,\n // What is left of the countdown at the moment of pausing, floored at 0\n // so a timer that was already due does not resume with a negative delay.\n remaining: Math.max(0, timer.remaining - (Date.now() - timer.startedAt)),\n });\n }, []);\n\n const resumeSnackbar = useCallback(\n (id: string): void => {\n const timer = timers.current.get(id);\n if (!timer) return;\n startTimer(id, timer.remaining);\n },\n [startTimer],\n );\n\n removeSnackbarRef.current = removeSnackbar;\n\n const clearAllSnackbars = useCallback((): void => {\n // Transition all to exiting state\n setSnackbars((prev) => prev.map((item) => ({ ...item, state: 'exiting' })));\n\n // Remove all after animation completes (300ms to match CSS animation)\n setTimeout(() => {\n setSnackbars([]);\n }, 300);\n }, []);\n\n const contextValue: SnackbarContextValue = {\n snackbars,\n addSnackbar,\n removeSnackbar,\n clearAllSnackbars,\n pauseSnackbar,\n resumeSnackbar,\n };\n\n return <SnackbarContext.Provider value={contextValue}>{children}</SnackbarContext.Provider>;\n};\n\nSnackbarProvider.displayName = 'SnackbarProvider';\n","import React from 'react';\nimport { createPortal } from 'react-dom';\nimport { useSnackbarContext } from './Snackbar.context';\nimport { SnackbarComponent } from './Snackbar.component';\n\nexport const SnackbarContainer: React.FC = () => {\n const { snackbars, removeSnackbar, pauseSnackbar, resumeSnackbar } = useSnackbarContext();\n\n if (snackbars.length === 0) {\n return null;\n }\n\n return createPortal(\n <div className={'eidos-snackbar-container'}>\n {snackbars.map((snackbar) => (\n <div\n key={snackbar.id}\n className={'eidos-snackbar-wrapper'}\n // Holds the auto-dismiss countdown while the user is engaged with\n // this snackbar, which is what makes the time limit adjustable\n // (SC 2.2.1). Hover covers reading it; focus covers reaching its\n // action by keyboard - `onFocus`/`onBlur` bubble in React, so a\n // focused \"Undo\" button inside pauses the whole snackbar.\n onMouseEnter={() => pauseSnackbar(snackbar.id)}\n onMouseLeave={() => resumeSnackbar(snackbar.id)}\n onFocus={() => pauseSnackbar(snackbar.id)}\n onBlur={() => resumeSnackbar(snackbar.id)}\n >\n <SnackbarComponent snackbar={snackbar} onClose={removeSnackbar} />\n </div>\n ))}\n </div>,\n document.body,\n );\n};\n\nSnackbarContainer.displayName = 'SnackbarContainer';\n","import React from 'react';\nimport { X } from 'lucide-react';\nimport { Button } from '../Button/Button.component';\nimport type { SnackbarItem } from './Snackbar.types';\n\ninterface SnackbarComponentProps {\n snackbar: SnackbarItem;\n onClose: (id: string) => void;\n}\n\nexport const SnackbarComponent: React.FC<SnackbarComponentProps> = ({ snackbar, onClose }) => {\n const {\n id,\n variant = 'info',\n message,\n component: Component,\n componentProps,\n action,\n state,\n } = snackbar;\n\n const handleClose = () => {\n // onClose callback is fired by removeSnackbar (context) to cover both\n // manual and auto-close paths without duplication.\n onClose(id);\n };\n\n const handleActionClick = () => {\n if (action?.onClick) {\n action.onClick();\n }\n };\n\n // Render content based on type\n const renderContent = () => {\n if (message) {\n return <span className={'eidos-snackbar-message'}>{message}</span>;\n }\n if (Component) {\n return <Component {...(componentProps || {})} />;\n }\n return null;\n };\n\n return (\n <div\n className={`eidos-snackbar eidos-snackbar--${variant} eidos-snackbar--${state} ${snackbar.className || ''}`}\n role=\"alert\"\n aria-live=\"polite\"\n >\n <div className={'eidos-snackbar-content'}>{renderContent()}</div>\n\n {action && (\n <div className={'eidos-snackbar-actions'}>\n <Button\n variant={action.variant === 'primary' ? 'filled' : 'text'}\n size=\"sm\"\n onClick={handleActionClick}\n className={'eidos-snackbar-action-button'}\n >\n {action.label}\n </Button>\n </div>\n )}\n\n <button\n className={'eidos-snackbar-close-button'}\n onClick={handleClose}\n aria-label=\"Close notification\"\n type=\"button\"\n >\n <X className={'eidos-snackbar-close-icon'} />\n </button>\n </div>\n );\n};\n\nSnackbarComponent.displayName = 'SnackbarComponent';\n","import { useCallback } from 'react';\nimport { useSnackbarContext } from './Snackbar.context';\nimport type { UseSnackbarReturn, SnackbarProps } from './Snackbar.types';\n\nexport const useSnackbar = (): UseSnackbarReturn => {\n const { addSnackbar, removeSnackbar, clearAllSnackbars } = useSnackbarContext();\n\n const showSnackbar = useCallback(\n (snackbar: Omit<SnackbarProps, 'id'>): string => {\n return addSnackbar(snackbar);\n },\n [addSnackbar],\n );\n\n const hideSnackbar = useCallback(\n (id: string): void => {\n removeSnackbar(id);\n },\n [removeSnackbar],\n );\n\n const clearAll = useCallback((): void => {\n clearAllSnackbars();\n }, [clearAllSnackbars]);\n\n const showSuccess = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'success',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showError = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'danger',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showWarning = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'warning',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n const showInfo = useCallback(\n (message: string, options?: Partial<Omit<SnackbarProps, 'id' | 'message' | 'variant'>>) => {\n return showSnackbar({\n message,\n variant: 'info',\n duration: 5000,\n ...options,\n });\n },\n [showSnackbar],\n );\n\n return {\n showSnackbar,\n hideSnackbar,\n clearAll,\n showSuccess,\n showError,\n showWarning,\n showInfo,\n };\n};\n\nexport default useSnackbar;\n"]}
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  Button
3
- } from "./chunk-JY77VJAZ.js";
3
+ } from "./chunk-GHUEVNNU.js";
4
4
  import {
5
5
  useDialogFocus,
6
6
  useIsClient
7
- } from "./chunk-U34INRFO.js";
7
+ } from "./chunk-PP6HS4GR.js";
8
8
 
9
9
  // src/components/Drawer/Drawer.component.tsx
10
10
  import { useEffect, useCallback, useId, useRef, useState } from "react";
@@ -143,4 +143,4 @@ Drawer.displayName = "Drawer";
143
143
  export {
144
144
  Drawer
145
145
  };
146
- //# sourceMappingURL=chunk-IKXXXVUO.js.map
146
+ //# sourceMappingURL=chunk-7TQUJ6BJ.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 _chunkULKWUKD2cjs = require('./chunk-ULKWUKD2.cjs');
3
+ var _chunkYHSCUPP6cjs = require('./chunk-YHSCUPP6.cjs');
4
4
 
5
5
 
6
- var _chunkB2OHBIALcjs = require('./chunk-B2OHBIAL.cjs');
6
+ var _chunkBKUZF7CWcjs = require('./chunk-BKUZF7CW.cjs');
7
7
 
8
8
 
9
- var _chunk4HZIXRAJcjs = require('./chunk-4HZIXRAJ.cjs');
9
+ var _chunkKF2OGUADcjs = require('./chunk-KF2OGUAD.cjs');
10
10
 
11
11
 
12
- var _chunkVXC7Z7XBcjs = require('./chunk-VXC7Z7XB.cjs');
12
+ var _chunkMKQVDEHIcjs = require('./chunk-MKQVDEHI.cjs');
13
13
 
14
14
 
15
15
  var _chunk3ETWFS2Ncjs = require('./chunk-3ETWFS2N.cjs');
16
16
 
17
17
 
18
- var _chunkXPG56DLQcjs = require('./chunk-XPG56DLQ.cjs');
18
+ var _chunkNSA7ASZ7cjs = require('./chunk-NSA7ASZ7.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
- _chunkB2OHBIALcjs.Select,
161
+ _chunkBKUZF7CWcjs.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
- _chunkB2OHBIALcjs.Select,
177
+ _chunkBKUZF7CWcjs.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
- _chunkULKWUKD2cjs.DatePicker,
241
+ _chunkYHSCUPP6cjs.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
- _chunk4HZIXRAJcjs.Input,
259
+ _chunkKF2OGUADcjs.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
- _chunkXPG56DLQcjs.Button,
273
+ _chunkNSA7ASZ7cjs.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
- _chunkB2OHBIALcjs.Select,
291
+ _chunkBKUZF7CWcjs.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
- _chunk4HZIXRAJcjs.Input,
308
+ _chunkKF2OGUADcjs.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
- _chunkXPG56DLQcjs.Button,
319
+ _chunkNSA7ASZ7cjs.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
- _chunkXPG56DLQcjs.Button,
334
+ _chunkNSA7ASZ7cjs.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, _chunkXPG56DLQcjs.Button, { variant: "text", size: "sm", color: "secondary", onClick: clearAllFilters, children: "Clear All" }),
344
+ hasActiveFilters && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNSA7ASZ7cjs.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
- _chunkXPG56DLQcjs.Button,
347
+ _chunkNSA7ASZ7cjs.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
- _chunkXPG56DLQcjs.Button,
358
+ _chunkNSA7ASZ7cjs.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
- _chunkVXC7Z7XBcjs.Dropdown,
372
+ _chunkMKQVDEHIcjs.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-544RAXWO.cjs.map
4446
+ //# sourceMappingURL=chunk-7VMF6LIC.cjs.map