silver-ui 0.2.0 → 0.3.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 (284) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-GYUWDJXS.cjs → chunk-25FU5AVR.cjs} +5 -5
  3. package/dist/{chunk-GYUWDJXS.cjs.map → chunk-25FU5AVR.cjs.map} +1 -1
  4. package/dist/{chunk-3SLWOIT4.cjs → chunk-276LEL3G.cjs} +15 -6
  5. package/dist/chunk-276LEL3G.cjs.map +1 -0
  6. package/dist/{chunk-Z7ID5TC7.cjs → chunk-2D6SGEPH.cjs} +4 -4
  7. package/dist/{chunk-Z7ID5TC7.cjs.map → chunk-2D6SGEPH.cjs.map} +1 -1
  8. package/dist/{chunk-DH2ZFYKE.cjs → chunk-2TGDDZG6.cjs} +6 -6
  9. package/dist/{chunk-DH2ZFYKE.cjs.map → chunk-2TGDDZG6.cjs.map} +1 -1
  10. package/dist/{chunk-MEBIRX2P.js → chunk-2YC7SMVF.js} +4 -4
  11. package/dist/{chunk-MEBIRX2P.js.map → chunk-2YC7SMVF.js.map} +1 -1
  12. package/dist/{chunk-NF63IRZR.cjs → chunk-32G54PL3.cjs} +4 -4
  13. package/dist/{chunk-NF63IRZR.cjs.map → chunk-32G54PL3.cjs.map} +1 -1
  14. package/dist/{chunk-CBJ4APCT.js → chunk-3DW2N6UN.js} +4 -3
  15. package/dist/chunk-3DW2N6UN.js.map +1 -0
  16. package/dist/{chunk-MMQIQILP.cjs → chunk-3PDUOYAT.cjs} +17 -17
  17. package/dist/{chunk-MMQIQILP.cjs.map → chunk-3PDUOYAT.cjs.map} +1 -1
  18. package/dist/{chunk-UYKFE7KF.js → chunk-4CVDLMD6.js} +15 -6
  19. package/dist/chunk-4CVDLMD6.js.map +1 -0
  20. package/dist/{chunk-ABEOBHAM.cjs → chunk-4T62TLOD.cjs} +4 -4
  21. package/dist/{chunk-ABEOBHAM.cjs.map → chunk-4T62TLOD.cjs.map} +1 -1
  22. package/dist/{chunk-OBBPRWYD.js → chunk-4Z62KDKI.js} +5 -5
  23. package/dist/{chunk-OBBPRWYD.js.map → chunk-4Z62KDKI.js.map} +1 -1
  24. package/dist/{chunk-SXIBQQ55.js → chunk-5BLNJVIA.js} +3 -3
  25. package/dist/{chunk-SXIBQQ55.js.map → chunk-5BLNJVIA.js.map} +1 -1
  26. package/dist/{chunk-AXCE2HKG.js → chunk-5Q5TJUHI.js} +3 -3
  27. package/dist/{chunk-AXCE2HKG.js.map → chunk-5Q5TJUHI.js.map} +1 -1
  28. package/dist/{chunk-ESJND7B6.js → chunk-67VLK263.js} +5 -5
  29. package/dist/{chunk-ESJND7B6.js.map → chunk-67VLK263.js.map} +1 -1
  30. package/dist/{chunk-FDSUILCM.cjs → chunk-6ADWXOZ2.cjs} +2 -3
  31. package/dist/chunk-6ADWXOZ2.cjs.map +1 -0
  32. package/dist/{chunk-7DWASA3K.js → chunk-6XESVFC3.js} +3 -3
  33. package/dist/{chunk-7DWASA3K.js.map → chunk-6XESVFC3.js.map} +1 -1
  34. package/dist/{chunk-QADMIAYK.js → chunk-7FY26X2V.js} +3 -3
  35. package/dist/{chunk-QADMIAYK.js.map → chunk-7FY26X2V.js.map} +1 -1
  36. package/dist/{chunk-VBL5SI5N.js → chunk-AADUJ6CN.js} +4 -4
  37. package/dist/{chunk-VBL5SI5N.js.map → chunk-AADUJ6CN.js.map} +1 -1
  38. package/dist/{chunk-U5ZCQI5O.cjs → chunk-ACQMLJ4I.cjs} +29 -29
  39. package/dist/chunk-ACQMLJ4I.cjs.map +1 -0
  40. package/dist/{chunk-SA3LUT6E.js → chunk-AGJ5SZCM.js} +4 -4
  41. package/dist/{chunk-SA3LUT6E.js.map → chunk-AGJ5SZCM.js.map} +1 -1
  42. package/dist/{chunk-3JVD4AXC.js → chunk-AH4AMQEO.js} +3 -3
  43. package/dist/{chunk-3JVD4AXC.js.map → chunk-AH4AMQEO.js.map} +1 -1
  44. package/dist/{chunk-47FUQCAT.cjs → chunk-ATDW2VII.cjs} +38 -38
  45. package/dist/{chunk-47FUQCAT.cjs.map → chunk-ATDW2VII.cjs.map} +1 -1
  46. package/dist/{chunk-ZP3UZDSV.cjs → chunk-AXT4VA5N.cjs} +6 -6
  47. package/dist/{chunk-ZP3UZDSV.cjs.map → chunk-AXT4VA5N.cjs.map} +1 -1
  48. package/dist/{chunk-DZ3NHSJ4.js → chunk-BERQEJYB.js} +3 -3
  49. package/dist/{chunk-DZ3NHSJ4.js.map → chunk-BERQEJYB.js.map} +1 -1
  50. package/dist/{chunk-MX2F3HUI.cjs → chunk-BFWKL5MJ.cjs} +7 -7
  51. package/dist/{chunk-MX2F3HUI.cjs.map → chunk-BFWKL5MJ.cjs.map} +1 -1
  52. package/dist/{chunk-3IDEWEDY.cjs → chunk-BJD32VBQ.cjs} +4 -4
  53. package/dist/{chunk-3IDEWEDY.cjs.map → chunk-BJD32VBQ.cjs.map} +1 -1
  54. package/dist/{chunk-BZ4XKKNH.js → chunk-BYBVI7UN.js} +5 -5
  55. package/dist/{chunk-BZ4XKKNH.js.map → chunk-BYBVI7UN.js.map} +1 -1
  56. package/dist/{chunk-TZQWZ7IL.cjs → chunk-C264Z2GQ.cjs} +6 -6
  57. package/dist/{chunk-TZQWZ7IL.cjs.map → chunk-C264Z2GQ.cjs.map} +1 -1
  58. package/dist/{chunk-PWL6TWVC.cjs → chunk-CFOGSQCG.cjs} +4 -4
  59. package/dist/{chunk-PWL6TWVC.cjs.map → chunk-CFOGSQCG.cjs.map} +1 -1
  60. package/dist/{chunk-YUONTRNC.js → chunk-CZNN2GOC.js} +5 -5
  61. package/dist/{chunk-YUONTRNC.js.map → chunk-CZNN2GOC.js.map} +1 -1
  62. package/dist/{chunk-HMWV6KCW.cjs → chunk-DSNJDFO3.cjs} +4 -4
  63. package/dist/{chunk-HMWV6KCW.cjs.map → chunk-DSNJDFO3.cjs.map} +1 -1
  64. package/dist/{chunk-FHKB6MBQ.js → chunk-E4KM3RQ2.js} +11 -11
  65. package/dist/{chunk-FHKB6MBQ.js.map → chunk-E4KM3RQ2.js.map} +1 -1
  66. package/dist/{chunk-AKTUU5ML.js → chunk-EUN5TCB2.js} +6 -6
  67. package/dist/{chunk-AKTUU5ML.js.map → chunk-EUN5TCB2.js.map} +1 -1
  68. package/dist/{chunk-V7Q64Z3S.cjs → chunk-FQSOUCZS.cjs} +8 -8
  69. package/dist/{chunk-V7Q64Z3S.cjs.map → chunk-FQSOUCZS.cjs.map} +1 -1
  70. package/dist/{chunk-PTZAJW3J.js → chunk-GI5MVVIX.js} +3 -3
  71. package/dist/{chunk-PTZAJW3J.js.map → chunk-GI5MVVIX.js.map} +1 -1
  72. package/dist/{chunk-63RKQ237.js → chunk-H2SGYAUO.js} +4 -4
  73. package/dist/{chunk-63RKQ237.js.map → chunk-H2SGYAUO.js.map} +1 -1
  74. package/dist/{chunk-RRNT32KY.js → chunk-HLN3JQYD.js} +3 -3
  75. package/dist/chunk-HLN3JQYD.js.map +1 -0
  76. package/dist/{chunk-3DZPRXMC.cjs → chunk-I2X2Z7FA.cjs} +3 -3
  77. package/dist/chunk-I2X2Z7FA.cjs.map +1 -0
  78. package/dist/{chunk-ZJ2NV4SQ.js → chunk-IG4UJZ6B.js} +15 -15
  79. package/dist/chunk-IG4UJZ6B.js.map +1 -0
  80. package/dist/{chunk-STSR3FAC.js → chunk-ISYUZ5FS.js} +3 -3
  81. package/dist/{chunk-STSR3FAC.js.map → chunk-ISYUZ5FS.js.map} +1 -1
  82. package/dist/{chunk-VQ7IRFRR.cjs → chunk-ITDQSF2O.cjs} +9 -9
  83. package/dist/{chunk-VQ7IRFRR.cjs.map → chunk-ITDQSF2O.cjs.map} +1 -1
  84. package/dist/{chunk-36QGPGT2.cjs → chunk-JAHKLROD.cjs} +4 -4
  85. package/dist/{chunk-36QGPGT2.cjs.map → chunk-JAHKLROD.cjs.map} +1 -1
  86. package/dist/{chunk-7MB2KK6X.js → chunk-KIGRE6NA.js} +4 -4
  87. package/dist/{chunk-7MB2KK6X.js.map → chunk-KIGRE6NA.js.map} +1 -1
  88. package/dist/{chunk-U4GWNENK.js → chunk-M4JUQCKP.js} +3 -3
  89. package/dist/chunk-M4JUQCKP.js.map +1 -0
  90. package/dist/{chunk-74ONIT6C.js → chunk-MACIT6C6.js} +3 -3
  91. package/dist/{chunk-74ONIT6C.js.map → chunk-MACIT6C6.js.map} +1 -1
  92. package/dist/{chunk-BDBHHJGN.cjs → chunk-MAL4D4LR.cjs} +4 -4
  93. package/dist/{chunk-BDBHHJGN.cjs.map → chunk-MAL4D4LR.cjs.map} +1 -1
  94. package/dist/{chunk-DP4KK2N4.cjs → chunk-MQQ4GSUG.cjs} +12 -8
  95. package/dist/chunk-MQQ4GSUG.cjs.map +1 -0
  96. package/dist/{chunk-4YQTSHIB.cjs → chunk-OJKZS6HG.cjs} +5 -5
  97. package/dist/{chunk-4YQTSHIB.cjs.map → chunk-OJKZS6HG.cjs.map} +1 -1
  98. package/dist/chunk-OMHOVHPX.js +78 -0
  99. package/dist/chunk-OMHOVHPX.js.map +1 -0
  100. package/dist/{chunk-TH3H5UGK.cjs → chunk-PLXUM7U6.cjs} +10 -10
  101. package/dist/{chunk-TH3H5UGK.cjs.map → chunk-PLXUM7U6.cjs.map} +1 -1
  102. package/dist/{chunk-2VIJC4NW.cjs → chunk-PTJ5YZFY.cjs} +6 -6
  103. package/dist/{chunk-2VIJC4NW.cjs.map → chunk-PTJ5YZFY.cjs.map} +1 -1
  104. package/dist/{chunk-POW2Z7TP.js → chunk-PXIWITSS.js} +3 -3
  105. package/dist/{chunk-POW2Z7TP.js.map → chunk-PXIWITSS.js.map} +1 -1
  106. package/dist/{chunk-2K44WLBJ.js → chunk-PXTE3XRD.js} +4 -4
  107. package/dist/{chunk-2K44WLBJ.js.map → chunk-PXTE3XRD.js.map} +1 -1
  108. package/dist/{chunk-IR4COTIR.js → chunk-RKMW3ZOK.js} +3 -3
  109. package/dist/{chunk-IR4COTIR.js.map → chunk-RKMW3ZOK.js.map} +1 -1
  110. package/dist/{chunk-UQV5MOGR.js → chunk-SEAVOF6B.js} +3 -3
  111. package/dist/{chunk-UQV5MOGR.js.map → chunk-SEAVOF6B.js.map} +1 -1
  112. package/dist/{chunk-RSG7N5QQ.cjs → chunk-SFT5LCQP.cjs} +6 -6
  113. package/dist/{chunk-RSG7N5QQ.cjs.map → chunk-SFT5LCQP.cjs.map} +1 -1
  114. package/dist/{chunk-AJYVGSBW.cjs → chunk-TRK2ZZFB.cjs} +2 -3
  115. package/dist/chunk-TRK2ZZFB.cjs.map +1 -0
  116. package/dist/{chunk-2RIDPITG.cjs → chunk-UMGW7WJI.cjs} +5 -5
  117. package/dist/{chunk-2RIDPITG.cjs.map → chunk-UMGW7WJI.cjs.map} +1 -1
  118. package/dist/{chunk-GGZGVAEF.cjs → chunk-UR7RYJOU.cjs} +9 -9
  119. package/dist/{chunk-GGZGVAEF.cjs.map → chunk-UR7RYJOU.cjs.map} +1 -1
  120. package/dist/{chunk-JMLJLDHO.cjs → chunk-UYXQBM2B.cjs} +6 -6
  121. package/dist/{chunk-JMLJLDHO.cjs.map → chunk-UYXQBM2B.cjs.map} +1 -1
  122. package/dist/{chunk-6NY5DOFM.js → chunk-VSEKSDTK.js} +3 -3
  123. package/dist/{chunk-6NY5DOFM.js.map → chunk-VSEKSDTK.js.map} +1 -1
  124. package/dist/{chunk-WE2AXMPB.js → chunk-VYFMYXU4.js} +4 -4
  125. package/dist/{chunk-WE2AXMPB.js.map → chunk-VYFMYXU4.js.map} +1 -1
  126. package/dist/{chunk-QPYPPJEZ.js → chunk-WATCCAQU.js} +3 -3
  127. package/dist/chunk-WATCCAQU.js.map +1 -0
  128. package/dist/{chunk-UC36KIEP.cjs → chunk-WGCGHFXE.cjs} +2 -3
  129. package/dist/chunk-WGCGHFXE.cjs.map +1 -0
  130. package/dist/chunk-WNGBWUWZ.cjs +80 -0
  131. package/dist/chunk-WNGBWUWZ.cjs.map +1 -0
  132. package/dist/{chunk-JEK5SVB5.cjs → chunk-WWB4NSEY.cjs} +6 -6
  133. package/dist/{chunk-JEK5SVB5.cjs.map → chunk-WWB4NSEY.cjs.map} +1 -1
  134. package/dist/{chunk-O2ZMOBMA.cjs → chunk-X5ZQRMEM.cjs} +11 -11
  135. package/dist/{chunk-O2ZMOBMA.cjs.map → chunk-X5ZQRMEM.cjs.map} +1 -1
  136. package/dist/{chunk-463O56TB.js → chunk-XM3AZXOA.js} +4 -4
  137. package/dist/{chunk-463O56TB.js.map → chunk-XM3AZXOA.js.map} +1 -1
  138. package/dist/{chunk-CPZWTWYQ.js → chunk-XQU4ECJY.js} +9 -5
  139. package/dist/chunk-XQU4ECJY.js.map +1 -0
  140. package/dist/{chunk-XHTKGOQV.cjs → chunk-Y5SXQR52.cjs} +7 -7
  141. package/dist/{chunk-XHTKGOQV.cjs.map → chunk-Y5SXQR52.cjs.map} +1 -1
  142. package/dist/{chunk-O3T7Z6RH.cjs → chunk-YBPG5RPR.cjs} +3 -3
  143. package/dist/chunk-YBPG5RPR.cjs.map +1 -0
  144. package/dist/{chunk-EBCHOGKT.js → chunk-YGYA4BYN.js} +3 -3
  145. package/dist/{chunk-EBCHOGKT.js.map → chunk-YGYA4BYN.js.map} +1 -1
  146. package/dist/{chunk-BTL6GUMN.js → chunk-YJJOKZN2.js} +3 -3
  147. package/dist/{chunk-BTL6GUMN.js.map → chunk-YJJOKZN2.js.map} +1 -1
  148. package/dist/{chunk-WVQDFCFQ.js → chunk-ZH3GKYUZ.js} +3 -3
  149. package/dist/chunk-ZH3GKYUZ.js.map +1 -0
  150. package/dist/{chunk-3DFRJSNE.cjs → chunk-ZNPTARIS.cjs} +6 -6
  151. package/dist/{chunk-3DFRJSNE.cjs.map → chunk-ZNPTARIS.cjs.map} +1 -1
  152. package/dist/{chunk-OJ3KVNW2.js → chunk-ZNZ67KFM.js} +3 -3
  153. package/dist/{chunk-OJ3KVNW2.js.map → chunk-ZNZ67KFM.js.map} +1 -1
  154. package/dist/{chunk-UUIAGGFW.cjs → chunk-ZTQQ2O6O.cjs} +4 -4
  155. package/dist/{chunk-UUIAGGFW.cjs.map → chunk-ZTQQ2O6O.cjs.map} +1 -1
  156. package/dist/{chunk-MNVBSOAQ.cjs → chunk-ZXPKFGRB.cjs} +6 -6
  157. package/dist/{chunk-MNVBSOAQ.cjs.map → chunk-ZXPKFGRB.cjs.map} +1 -1
  158. package/dist/components/Alert/index.cjs +3 -3
  159. package/dist/components/Alert/index.js +2 -2
  160. package/dist/components/AlertDialog/index.cjs +5 -5
  161. package/dist/components/AlertDialog/index.js +3 -3
  162. package/dist/components/AppShell/index.cjs +9 -9
  163. package/dist/components/AppShell/index.js +6 -6
  164. package/dist/components/AutocompleteInput/index.cjs +7 -7
  165. package/dist/components/AutocompleteInput/index.js +3 -3
  166. package/dist/components/Blockquote/index.cjs +2 -6
  167. package/dist/components/Blockquote/index.d.ts +0 -1
  168. package/dist/components/Blockquote/index.d.ts.map +1 -1
  169. package/dist/components/Blockquote/index.js +1 -1
  170. package/dist/components/Button/index.cjs +2 -2
  171. package/dist/components/Button/index.js +1 -1
  172. package/dist/components/ButtonGroup/ButtonGroup.recipe.d.ts +4 -4
  173. package/dist/components/ButtonGroup/ButtonGroup.recipe.d.ts.map +1 -1
  174. package/dist/components/ButtonGroup/index.cjs +2 -2
  175. package/dist/components/ButtonGroup/index.js +1 -1
  176. package/dist/components/Calendar/index.cjs +3 -3
  177. package/dist/components/Calendar/index.js +2 -2
  178. package/dist/components/CodeBlock/index.cjs +3 -3
  179. package/dist/components/CodeBlock/index.d.ts +0 -1
  180. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  181. package/dist/components/CodeBlock/index.js +2 -2
  182. package/dist/components/ContextMenu/index.cjs +6 -6
  183. package/dist/components/ContextMenu/index.js +4 -4
  184. package/dist/components/DateInput/index.cjs +5 -5
  185. package/dist/components/DateInput/index.js +4 -4
  186. package/dist/components/DateRangeInput/index.cjs +5 -5
  187. package/dist/components/DateRangeInput/index.js +4 -4
  188. package/dist/components/DateTimeInput/index.cjs +7 -7
  189. package/dist/components/DateTimeInput/index.js +6 -6
  190. package/dist/components/DropdownMenu/index.cjs +7 -7
  191. package/dist/components/DropdownMenu/index.js +3 -3
  192. package/dist/components/FileInput/index.cjs +3 -3
  193. package/dist/components/FileInput/index.js +2 -2
  194. package/dist/components/Kbd/index.d.ts +0 -1
  195. package/dist/components/Kbd/index.d.ts.map +1 -1
  196. package/dist/components/Layout/index.cjs +7 -7
  197. package/dist/components/Layout/index.js +2 -2
  198. package/dist/components/Lightbox/index.cjs +4 -4
  199. package/dist/components/Lightbox/index.js +2 -2
  200. package/dist/components/MultiSelect/index.cjs +4 -4
  201. package/dist/components/MultiSelect/index.js +3 -3
  202. package/dist/components/NumberInput/index.cjs +3 -3
  203. package/dist/components/NumberInput/index.js +2 -2
  204. package/dist/components/Pagination/index.cjs +3 -3
  205. package/dist/components/Pagination/index.js +2 -2
  206. package/dist/components/PasswordInput/index.cjs +4 -4
  207. package/dist/components/PasswordInput/index.js +3 -3
  208. package/dist/components/Popover/index.cjs +4 -4
  209. package/dist/components/Popover/index.js +2 -2
  210. package/dist/components/RadioGroup/index.d.ts +0 -1
  211. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  212. package/dist/components/Rating/index.cjs +2 -6
  213. package/dist/components/Rating/index.d.ts +0 -1
  214. package/dist/components/Rating/index.d.ts.map +1 -1
  215. package/dist/components/Rating/index.js +1 -1
  216. package/dist/components/Schedule/index.cjs +16 -16
  217. package/dist/components/Schedule/index.js +5 -5
  218. package/dist/components/SearchFilterInput/index.cjs +19 -19
  219. package/dist/components/SearchFilterInput/index.js +11 -11
  220. package/dist/components/Select/index.cjs +5 -5
  221. package/dist/components/Select/index.js +3 -3
  222. package/dist/components/SideNav/SideNavItem.d.ts.map +1 -1
  223. package/dist/components/SideNav/index.cjs +9 -9
  224. package/dist/components/SideNav/index.js +3 -3
  225. package/dist/components/Skeleton/index.cjs +2 -6
  226. package/dist/components/Skeleton/index.d.ts +0 -1
  227. package/dist/components/Skeleton/index.d.ts.map +1 -1
  228. package/dist/components/Skeleton/index.js +1 -1
  229. package/dist/components/Slider/Slider.d.ts.map +1 -1
  230. package/dist/components/Slider/index.cjs +2 -6
  231. package/dist/components/Slider/index.d.ts +0 -1
  232. package/dist/components/Slider/index.d.ts.map +1 -1
  233. package/dist/components/Slider/index.js +1 -1
  234. package/dist/components/SplitButton/SplitButton.d.ts +89 -0
  235. package/dist/components/SplitButton/SplitButton.d.ts.map +1 -0
  236. package/dist/components/SplitButton/index.cjs +34 -0
  237. package/dist/components/SplitButton/index.cjs.map +1 -0
  238. package/dist/components/SplitButton/index.d.ts +2 -0
  239. package/dist/components/SplitButton/index.d.ts.map +1 -0
  240. package/dist/components/SplitButton/index.js +25 -0
  241. package/dist/components/SplitButton/index.js.map +1 -0
  242. package/dist/components/Table/index.cjs +41 -41
  243. package/dist/components/Table/index.js +13 -13
  244. package/dist/components/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
  245. package/dist/components/Tabs/index.cjs +8 -8
  246. package/dist/components/Tabs/index.js +3 -3
  247. package/dist/components/TagsInput/index.cjs +5 -5
  248. package/dist/components/TagsInput/index.js +4 -4
  249. package/dist/components/TextInput/index.cjs +3 -3
  250. package/dist/components/TextInput/index.js +2 -2
  251. package/dist/components/Thumbnail/index.cjs +4 -4
  252. package/dist/components/Thumbnail/index.d.ts +0 -1
  253. package/dist/components/Thumbnail/index.d.ts.map +1 -1
  254. package/dist/components/Thumbnail/index.js +3 -3
  255. package/dist/components/TimeInput/index.cjs +3 -3
  256. package/dist/components/TimeInput/index.js +2 -2
  257. package/dist/components/Toast/index.cjs +5 -5
  258. package/dist/components/Toast/index.js +2 -2
  259. package/dist/components/TopNav/index.cjs +9 -9
  260. package/dist/components/TopNav/index.js +3 -3
  261. package/dist/index.cjs +164 -163
  262. package/dist/index.cjs.map +1 -1
  263. package/dist/index.d.ts +2 -1
  264. package/dist/index.d.ts.map +1 -1
  265. package/dist/index.js +40 -39
  266. package/dist/index.js.map +1 -1
  267. package/dist/styles.css +1 -1
  268. package/package.json +1 -1
  269. package/dist/chunk-3DZPRXMC.cjs.map +0 -1
  270. package/dist/chunk-3SLWOIT4.cjs.map +0 -1
  271. package/dist/chunk-AJYVGSBW.cjs.map +0 -1
  272. package/dist/chunk-CBJ4APCT.js.map +0 -1
  273. package/dist/chunk-CPZWTWYQ.js.map +0 -1
  274. package/dist/chunk-DP4KK2N4.cjs.map +0 -1
  275. package/dist/chunk-FDSUILCM.cjs.map +0 -1
  276. package/dist/chunk-O3T7Z6RH.cjs.map +0 -1
  277. package/dist/chunk-QPYPPJEZ.js.map +0 -1
  278. package/dist/chunk-RRNT32KY.js.map +0 -1
  279. package/dist/chunk-U4GWNENK.js.map +0 -1
  280. package/dist/chunk-U5ZCQI5O.cjs.map +0 -1
  281. package/dist/chunk-UC36KIEP.cjs.map +0 -1
  282. package/dist/chunk-UYKFE7KF.js.map +0 -1
  283. package/dist/chunk-WVQDFCFQ.js.map +0 -1
  284. package/dist/chunk-ZJ2NV4SQ.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Table/TableBody.tsx","../src/components/Table/TableContext.ts","../src/components/Table/TableCell.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TableHeaderCell.tsx","../src/components/Table/TableRow.tsx","../src/components/Table/columnUtils.ts","../src/components/Table/BaseTable.tsx","../src/components/Table/useBaseTablePlugins.ts","../src/components/Table/Table.tsx","../src/components/Table/TableFooter.tsx","../src/components/Table/plugins/columnResize/useTableColumnResize.tsx","../src/components/Table/plugins/columnSettings/useTableColumnSettings.tsx","../src/components/Table/plugins/columnSettings/useTableColumnSettingsState.tsx","../src/components/Table/plugins/filtering/useTableFiltering.tsx","../src/components/Table/plugins/filtering/useTableFilterState.tsx","../src/components/Table/plugins/pagination/paginateData.ts","../src/components/Table/plugins/pagination/useTablePagination.tsx","../src/components/Table/plugins/selection/useTableSelection.tsx","../src/components/Table/plugins/selection/useTableSelectionState.tsx","../src/components/Table/plugins/sortable/useTableSortable.tsx","../src/components/Table/plugins/sortable/useTableSortableState.tsx"],"names":["jsx","styles","useMemo","useRef","jsxs","Fragment","useCallback","createContext","use","Temporal","useState","useEffect","entry","nextDirection"],"mappings":"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","file":"chunk-IG4UJZ6B.js","sourcesContent":["import type {CSSProperties, ReactNode, Ref} from 'react';\n\nexport interface TableBodyProps {\n /**\n * Table row elements rendered inside the body.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the tbody.\n */\n className?: string;\n /**\n * Test ID applied to the tbody.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the tbody element.\n */\n ref?: Ref<HTMLTableSectionElement>;\n /**\n * Inline styles applied to the tbody.\n */\n style?: CSSProperties;\n}\n\n/**\n * Wraps table body rows in a `<tbody>` element.\n */\nexport function TableBody({\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n style,\n}: TableBodyProps): React.JSX.Element {\n return (\n <tbody\n className={className}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {children}\n </tbody>\n );\n}\n\nTableBody.displayName = 'TableBody';\n","import {createContext, use} from 'react';\nimport type {TableContextValue} from './types';\n\nexport const TableContext = createContext<TableContextValue | null>(null);\nTableContext.displayName = 'TableContext';\n\nexport function useTableContext(): TableContextValue | null {\n return use(TableContext);\n}\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {useTableContext} from './TableContext';\n\nexport interface TableCellProps {\n /**\n * Cell content.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the td.\n */\n className?: string;\n /**\n * Number of columns the cell spans.\n */\n colSpan?: number;\n /**\n * Test ID applied to the td.\n */\n 'data-testid'?: string;\n /**\n * Space-separated list of header cell IDs this cell relates to.\n */\n headers?: string;\n /**\n * Ref forwarded to the td element.\n */\n ref?: Ref<HTMLTableCellElement>;\n /**\n * Number of rows the cell spans.\n */\n rowSpan?: number;\n /**\n * Scope of the cell when used as a header-like td.\n */\n scope?: 'col' | 'colgroup' | 'row' | 'rowgroup';\n /**\n * Inline styles applied to the td.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n base: css({\n maxWidth: 0,\n }),\n density: {\n balanced: css({fontSize: 'md', px: '3', py: '2'}),\n compact: css({fontSize: 'md', px: '2', py: '1'}),\n spacious: css({fontSize: 'md', px: '4', py: '3'}),\n },\n dividerColumns: css({\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n _last: {\n borderInlineEndWidth: 0,\n },\n }),\n dividerRows: css({\n borderBottomWidth: 'default',\n borderBottomStyle: 'solid',\n borderBottomColor: 'border',\n 'tbody > tr:last-child > &': {\n borderBottomWidth: 0,\n },\n }),\n truncate: css({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n verticalAlign: {\n bottom: css({verticalAlign: 'bottom'}),\n middle: css({verticalAlign: 'middle'}),\n top: css({verticalAlign: 'top'}),\n },\n wrap: css({\n overflow: 'hidden',\n overflowWrap: 'break-word',\n whiteSpace: 'normal',\n wordBreak: 'break-word',\n }),\n} as const;\n\n/**\n * Table data cell with density, alignment, and divider styling from context.\n */\nexport function TableCell({\n children,\n className,\n colSpan,\n 'data-testid': dataTestId,\n headers,\n ref,\n rowSpan,\n style,\n}: TableCellProps): React.JSX.Element {\n const context = useTableContext();\n return (\n <td\n className={cx(\n 'silver-table-cell',\n styles.base,\n context == null ? undefined : styles.density[context.density],\n context == null\n ? undefined\n : styles.verticalAlign[context.verticalAlign],\n context?.textOverflow === 'truncate' ? styles.truncate : styles.wrap,\n context?.dividers === 'rows' || context?.dividers === 'grid'\n ? styles.dividerRows\n : undefined,\n context?.dividers === 'columns' || context?.dividers === 'grid'\n ? styles.dividerColumns\n : undefined,\n className,\n )}\n colSpan={colSpan}\n data-testid={dataTestId}\n headers={headers}\n ref={ref}\n rowSpan={rowSpan}\n style={style}>\n {children}\n </td>\n );\n}\n\nTableCell.displayName = 'TableCell';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\n\nexport interface TableHeaderProps {\n /**\n * Header row elements rendered inside the thead.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the thead.\n */\n className?: string;\n /**\n * Test ID applied to the thead.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the thead element.\n */\n ref?: Ref<HTMLTableSectionElement>;\n /**\n * Inline styles applied to the thead.\n */\n style?: CSSProperties;\n}\n\n/**\n * Wraps table header rows in a `<thead>` element.\n */\nexport function TableHeader({\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n style,\n}: TableHeaderProps): React.JSX.Element {\n return (\n <thead\n className={className}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {children}\n </thead>\n );\n}\n\nTableHeader.displayName = 'TableHeader';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {useTableContext} from './TableContext';\n\nexport interface TableHeaderCellProps {\n /**\n * Header cell content.\n */\n children?: ReactNode;\n /**\n * Additional CSS class names applied to the th.\n */\n className?: string;\n /**\n * Test ID applied to the th.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the th element.\n */\n ref?: Ref<HTMLTableCellElement>;\n /**\n * Scope of the header cell.\n * @default 'col'\n */\n scope?: 'col' | 'colgroup' | 'row' | 'rowgroup';\n /**\n * Inline styles applied to the th.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n base: css({\n color: 'fg.muted',\n fontWeight: 'semibold',\n maxWidth: 0,\n overflow: 'hidden',\n textAlign: 'start',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n density: {\n balanced: css({fontSize: 'md', px: '3', py: '2'}),\n compact: css({fontSize: 'md', px: '2', py: '1'}),\n spacious: css({fontSize: 'md', px: '4', py: '3'}),\n },\n dividerBottom: css({\n borderBottomWidth: 'default',\n borderBottomStyle: 'solid',\n borderBottomColor: 'border',\n }),\n dividerColumns: css({\n borderInlineEndWidth: 'default',\n borderInlineEndStyle: 'solid',\n borderInlineEndColor: 'border',\n _last: {\n borderInlineEndWidth: 0,\n },\n }),\n} as const;\n\n/**\n * Table header cell with density and divider styling from context.\n */\nexport function TableHeaderCell({\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n scope = 'col',\n style,\n}: TableHeaderCellProps): React.JSX.Element {\n const context = useTableContext();\n return (\n <th\n className={cx(\n 'silver-table-header-cell',\n styles.base,\n styles.dividerBottom,\n context == null ? undefined : styles.density[context.density],\n context?.dividers === 'columns' || context?.dividers === 'grid'\n ? styles.dividerColumns\n : undefined,\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n scope={scope}\n style={style}>\n {children}\n </th>\n );\n}\n\nTableHeaderCell.displayName = 'TableHeaderCell';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {useTableContext} from './TableContext';\n\nexport interface TableRowProps {\n /**\n * Cell elements rendered inside the row.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the tr.\n */\n className?: string;\n /**\n * Test ID applied to the tr.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the tr element.\n */\n ref?: Ref<HTMLTableRowElement>;\n /**\n * Inline styles applied to the tr.\n */\n style?: CSSProperties;\n}\n\nconst styles = {\n base: css({\n transitionDuration: 'fast',\n transitionProperty: 'background-color',\n transitionTimingFunction: 'default',\n }),\n hover: css({\n _hover: {\n '@media (hover: hover)': {\n bg: 'bg.subtle',\n },\n },\n }),\n striped: css({\n _even: {\n bg: 'bg.subtle',\n },\n }),\n stripedHover: css({\n _even: {\n bg: 'bg.subtle',\n },\n _hover: {\n '@media (hover: hover)': {\n bg: 'bg.hover',\n },\n },\n }),\n} as const;\n\n/**\n * Table row with hover and striped styling from context.\n */\nexport function TableRow({\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n style,\n}: TableRowProps): React.JSX.Element {\n const context = useTableContext();\n const rowClassName =\n context == null\n ? undefined\n : context.isStriped && context.hasHover\n ? styles.stripedHover\n : context.isStriped\n ? styles.striped\n : context.hasHover\n ? styles.hover\n : undefined;\n\n return (\n <tr\n className={cx('silver-table-row', styles.base, rowClassName, className)}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {children}\n </tr>\n );\n}\n\nTableRow.displayName = 'TableRow';\n","import {Temporal} from '@js-temporal/polyfill';\nimport type {CSSProperties, ReactNode} from 'react';\nimport type {PixelWidth, ProportionalWidth, TableColumn} from './types';\n\nexport const DEFAULT_MIN_COLUMN_WIDTH = 120;\n\nexport interface ResolvedColumnWidth {\n style: CSSProperties;\n}\n\nexport interface ResolvedColumnWidths {\n columns: Map<string, ResolvedColumnWidth>;\n tableMinWidth: number;\n}\n\nexport function proportional(\n value: number = 1,\n options?: {minWidth?: number},\n): ProportionalWidth {\n return {\n minWidth: options?.minWidth ?? DEFAULT_MIN_COLUMN_WIDTH,\n type: 'proportional',\n value,\n };\n}\n\nexport function pixel(value: number): PixelWidth {\n return {type: 'pixel', value};\n}\n\nexport function resolveColumnWidths<T extends Record<string, unknown>>(\n columns: TableColumn<T>[],\n): ResolvedColumnWidths {\n let totalProportion = 0;\n let pixelTotal = 0;\n const proportionalColumns: {\n key: string;\n minWidth: number;\n proportion: number;\n }[] = [];\n\n for (const column of columns) {\n const width = column.width;\n if (width?.type === 'pixel') {\n pixelTotal += width.value;\n } else {\n const proportion = width?.value ?? 1;\n const minWidth =\n width == null ? 0 : (width.minWidth ?? DEFAULT_MIN_COLUMN_WIDTH);\n totalProportion += proportion;\n proportionalColumns.push({key: column.key, minWidth, proportion});\n }\n }\n\n let proportionalMinSpace = 0;\n if (totalProportion > 0) {\n for (const column of proportionalColumns) {\n proportionalMinSpace = Math.max(\n proportionalMinSpace,\n (column.minWidth * totalProportion) / column.proportion,\n );\n }\n }\n\n const resolved = new Map<string, ResolvedColumnWidth>();\n for (const column of columns) {\n const width = column.width;\n const style: CSSProperties = {};\n\n if (width?.type === 'pixel') {\n style.minWidth = `${width.value}px`;\n style.width = `${width.value}px`;\n } else {\n const proportion = width?.value ?? 1;\n if (totalProportion > 0) {\n style.width = `${(proportion / totalProportion) * 100}%`;\n }\n if (width != null) {\n style.minWidth = `${width.minWidth ?? DEFAULT_MIN_COLUMN_WIDTH}px`;\n }\n }\n\n resolved.set(column.key, {style});\n }\n\n return {\n columns: resolved,\n tableMinWidth: pixelTotal + proportionalMinSpace,\n };\n}\n\nexport function capitalize(value: string): string {\n return value.length === 0\n ? value\n : value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nexport function defaultCellRenderer<T extends Record<string, unknown>>(\n item: T,\n key: string,\n): ReactNode {\n const value = item[key];\n if (value == null) {\n return '';\n }\n // Default rendering intentionally supports Temporal date/time values only.\n // Use renderCell for native Date instances or other object values.\n if (\n value instanceof Temporal.Instant ||\n value instanceof Temporal.PlainDate ||\n value instanceof Temporal.PlainDateTime ||\n value instanceof Temporal.PlainTime ||\n value instanceof Temporal.ZonedDateTime\n ) {\n return value.toString();\n }\n if (\n typeof value === 'bigint' ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n ) {\n return String(value);\n }\n return '';\n}\n\nfunction estimateContentLength(value: unknown): number {\n if (value == null) {\n return 0;\n }\n if (\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n ) {\n return String(value).length;\n }\n return 0;\n}\n\nfunction longestWord(value: unknown): number {\n if (\n value == null ||\n (typeof value !== 'boolean' &&\n typeof value !== 'number' &&\n typeof value !== 'string')\n ) {\n return 0;\n }\n return String(value)\n .split(/\\s+/)\n .reduce((max, word) => Math.max(max, word.length), 0);\n}\n\nexport function generateColumns<T extends Record<string, unknown>>(\n data: T[],\n): TableColumn<T>[] {\n if (data.length === 0) {\n return [];\n }\n\n const sampleRows = data.slice(0, Math.min(5, data.length));\n return Object.keys(data[0]).map(key => {\n const header = capitalize(key);\n let maxContentLength = header.length;\n let maxWordLength = header.length;\n\n for (const row of sampleRows) {\n maxContentLength = Math.max(\n maxContentLength,\n estimateContentLength(row[key]),\n );\n maxWordLength = Math.max(maxWordLength, longestWord(row[key]));\n }\n\n const proportion =\n maxContentLength <= 6 ? 1 : maxContentLength <= 15 ? 2 : 3;\n const minWidth = Math.max(Math.max(header.length, maxWordLength) * 8, 60);\n\n return {\n header,\n key,\n width: proportional(proportion, {minWidth}),\n };\n });\n}\n","import {memo, useRef, type ReactElement, type ReactNode, type Ref} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {EmptyState} from '../EmptyState';\nimport {Text} from '../Text';\nimport {TableBody} from './TableBody';\nimport {TableCell} from './TableCell';\nimport {TableHeader} from './TableHeader';\nimport {TableHeaderCell} from './TableHeaderCell';\nimport {TableRow} from './TableRow';\nimport {\n defaultCellRenderer,\n generateColumns,\n resolveColumnWidths,\n} from './columnUtils';\nimport type {\n BaseTableProps,\n BodyCellRenderProps,\n BodyRowRenderProps,\n HeaderCellRenderProps,\n HeaderRowRenderProps,\n TableCellComponentProps,\n TableColumn,\n TableHeaderCellComponentProps,\n TablePlugin,\n TableRenderProps,\n TableRowComponentProps,\n} from './types';\n\nconst styles = {\n headerLabelRow: css({\n display: 'inline-flex',\n alignItems: 'center',\n gap: '1',\n minW: 0,\n }),\n table: css({\n w: 'full',\n borderCollapse: 'collapse',\n borderSpacing: 0,\n tableLayout: 'fixed',\n }),\n tableAutoLayout: css({\n tableLayout: 'auto',\n }),\n} as const;\n\nconst EMPTY_PLUGINS: TablePlugin<Record<string, unknown>>[] = [];\n\nfunction areArraysShallowEqual<T>(previous: T[], next: T[]): boolean {\n if (previous === next) {\n return true;\n }\n if (previous.length !== next.length) {\n return false;\n }\n for (let index = 0; index < previous.length; index++) {\n if (previous[index] !== next[index]) {\n return false;\n }\n }\n return true;\n}\n\nfunction applyPlugins<TPlugin, TProps, TArgs extends unknown[]>(\n plugins: TPlugin[],\n getter: (\n plugin: TPlugin,\n ) => ((props: TProps, ...args: TArgs) => TProps) | undefined,\n initial: TProps,\n ...args: TArgs\n): TProps {\n return plugins.reduce<TProps>((accumulator, plugin, index) => {\n const transform = getter(plugin);\n if (transform == null) {\n return accumulator;\n }\n try {\n return transform(accumulator, ...args);\n } catch (error) {\n console.error(`[Table] Plugin at index ${index} threw:`, error);\n return accumulator;\n }\n }, initial);\n}\n\ninterface DataRowProps<T extends Record<string, unknown>> {\n CellComponent: React.ComponentType<TableCellComponentProps>;\n columns: TableColumn<T>[];\n item: T;\n plugins: TablePlugin<T>[];\n RowComponent: React.ComponentType<TableRowComponentProps>;\n rowIndex: number;\n rowKey: number | string;\n textOverflow: 'truncate' | 'wrap';\n}\n\nfunction DataRowInner<T extends Record<string, unknown>>({\n CellComponent,\n RowComponent,\n columns,\n item,\n plugins,\n rowIndex,\n rowKey,\n textOverflow,\n}: DataRowProps<T>): ReactElement {\n const cells = columns.map(column => {\n const initialHtmlProps: BodyCellRenderProps['htmlProps'] = {};\n if (column.align) {\n initialHtmlProps.style = {textAlign: column.align};\n }\n\n const cellProps = applyPlugins(\n plugins,\n plugin => plugin.transformBodyCell,\n {htmlProps: initialHtmlProps} satisfies BodyCellRenderProps,\n column,\n item,\n );\n\n const isDefaultRenderer = column.renderCell == null;\n const rawContent = isDefaultRenderer\n ? defaultCellRenderer(item, column.key)\n : (column.renderCell?.(item) ?? null);\n const content =\n isDefaultRenderer &&\n textOverflow === 'truncate' &&\n typeof rawContent === 'string' &&\n rawContent.length > 0 ? (\n <Text maxLines={1} type=\"body\">\n {rawContent}\n </Text>\n ) : (\n rawContent\n );\n\n return (\n <CellComponent\n key={column.key}\n {...cellProps.htmlProps}\n className={cx(cellProps.htmlProps.className, cellProps.className)}>\n {content}\n </CellComponent>\n );\n });\n\n const rowProps = applyPlugins(\n plugins,\n plugin => plugin.transformBodyRow,\n {\n children: <>{cells}</>,\n htmlProps: {},\n } satisfies BodyRowRenderProps,\n item,\n rowIndex,\n );\n\n return (\n <RowComponent\n key={rowKey}\n {...rowProps.htmlProps}\n className={cx(rowProps.htmlProps.className, rowProps.className)}\n ref={rowProps.ref}>\n {rowProps.children}\n </RowComponent>\n );\n}\n\nfunction areRowPropsEqual<T extends Record<string, unknown>>(\n previous: DataRowProps<T>,\n next: DataRowProps<T>,\n): boolean {\n if (\n previous.CellComponent !== next.CellComponent ||\n previous.RowComponent !== next.RowComponent ||\n previous.columns !== next.columns ||\n previous.plugins !== next.plugins ||\n previous.rowIndex !== next.rowIndex ||\n previous.rowKey !== next.rowKey ||\n previous.textOverflow !== next.textOverflow\n ) {\n return false;\n }\n\n if (previous.item === next.item) {\n return true;\n }\n\n return Object.keys(next.item).every(\n key => previous.item[key] === next.item[key],\n );\n}\n\nconst MemoizedDataRow = memo(DataRowInner, areRowPropsEqual) as <\n T extends Record<string, unknown>,\n>(\n props: DataRowProps<T>,\n) => ReactElement;\n\n/**\n * Low-level table renderer that applies column definitions, plugins, and data mapping.\n */\nfunction BaseTableInner<T extends Record<string, unknown>>({\n children,\n className,\n columns: columnsProp,\n data,\n 'data-testid': dataTestId,\n emptyState,\n idKey,\n plugins: pluginsProp,\n ref,\n scrollWrapper: ScrollWrapper,\n style,\n tableProps,\n textOverflow = 'wrap',\n}: BaseTableProps<T> & {ref?: Ref<HTMLTableElement>}): ReactElement {\n const plugins = pluginsProp ?? (EMPTY_PLUGINS as TablePlugin<T>[]);\n const RowComponent = TableRow as React.ComponentType<TableRowComponentProps>;\n const CellComponent =\n TableCell as React.ComponentType<TableCellComponentProps>;\n const HeaderCellComponent =\n TableHeaderCell as React.ComponentType<TableHeaderCellComponentProps>;\n\n const baseColumns =\n columnsProp ?? (data == null ? [] : generateColumns(data));\n const transformedColumns = applyPlugins(\n plugins,\n plugin => plugin.transformColumns,\n baseColumns,\n );\n /* eslint-disable @eslint-react/refs -- render-time memoization keeps row props stable before children render */\n const columnsRef = useRef(transformedColumns);\n const areColumnsStable = areArraysShallowEqual(\n columnsRef.current,\n transformedColumns,\n );\n if (!areColumnsStable) {\n columnsRef.current = transformedColumns;\n }\n const columns = columnsRef.current;\n const widths = resolveColumnWidths(columns);\n /* eslint-enable @eslint-react/refs */\n\n const tableRenderProps = applyPlugins(\n plugins,\n plugin => plugin.transformTable,\n {\n htmlProps: tableProps ?? {},\n } satisfies TableRenderProps,\n );\n\n const headerCells = columns.map(column => {\n const headerContent = column.header ?? column.key;\n const initialHtmlProps: HeaderCellRenderProps['htmlProps'] & {\n 'data-column-key'?: string;\n } = {\n 'data-column-key': column.key,\n };\n if (column.align) {\n initialHtmlProps.style = {textAlign: column.align};\n }\n\n const headerCellProps = applyPlugins(\n plugins,\n plugin => plugin.transformHeaderCell,\n {\n content: headerContent,\n htmlProps: initialHtmlProps,\n } satisfies HeaderCellRenderProps,\n column,\n );\n\n const widthStyle = widths.columns.get(column.key)?.style ?? {};\n const mergedStyle = {\n ...widthStyle,\n ...headerCellProps.htmlProps.style,\n };\n const resolvedContent = headerCellProps.content ?? headerContent;\n const title =\n typeof resolvedContent === 'string' && resolvedContent.length > 0\n ? resolvedContent\n : undefined;\n const renderedContent =\n typeof resolvedContent === 'string' ||\n typeof resolvedContent === 'number' ? (\n <Text\n color=\"secondary\"\n maxLines={1}\n size=\"md\"\n type=\"body\"\n weight=\"semibold\">\n {resolvedContent}\n </Text>\n ) : (\n resolvedContent\n );\n const hasSlots =\n headerCellProps.before != null ||\n headerCellProps.after != null ||\n headerCellProps.overlay != null ||\n headerCellProps.below != null;\n\n return (\n <HeaderCellComponent\n key={column.key}\n {...headerCellProps.htmlProps}\n className={cx(\n headerCellProps.htmlProps.className,\n headerCellProps.className,\n )}\n style={mergedStyle}\n title={title}>\n {hasSlots ? (\n <>\n {headerCellProps.before}\n {headerCellProps.after == null ? (\n renderedContent\n ) : (\n <div className={styles.headerLabelRow}>\n {renderedContent}\n {headerCellProps.after}\n </div>\n )}\n {headerCellProps.overlay}\n {headerCellProps.below}\n </>\n ) : (\n renderedContent\n )}\n </HeaderCellComponent>\n );\n });\n\n const headerRowProps = applyPlugins(\n plugins,\n plugin => plugin.transformHeaderRow,\n {\n children: <>{headerCells}</>,\n htmlProps: {},\n } satisfies HeaderRowRenderProps,\n );\n\n const tableStyle = {\n ...style,\n ...tableRenderProps.htmlProps.style,\n minWidth:\n widths.tableMinWidth > 0 ? `${widths.tableMinWidth}px` : undefined,\n };\n const hasData = data != null && data.length > 0;\n const hasColumns = columns.length > 0;\n\n let tableElement: ReactNode = (\n <table\n {...tableRenderProps.htmlProps}\n className={cx(\n 'silver-base-table',\n styles.table,\n children != null ? styles.tableAutoLayout : undefined,\n tableRenderProps.htmlProps.className,\n tableRenderProps.className,\n className,\n )}\n data-testid={dataTestId}\n ref={ref}\n style={tableStyle}>\n {children ?? (\n <>\n {hasColumns ? (\n <TableHeader>\n <RowComponent\n {...headerRowProps.htmlProps}\n className={cx(\n headerRowProps.htmlProps.className,\n headerRowProps.className,\n )}>\n {headerRowProps.children}\n </RowComponent>\n </TableHeader>\n ) : null}\n <TableBody>\n {hasData\n ? data.map((item, rowIndex) => {\n const rowKey =\n idKey == null\n ? rowIndex\n : typeof idKey === 'function'\n ? idKey(item)\n : String(item[idKey]);\n return (\n <MemoizedDataRow\n CellComponent={CellComponent}\n columns={columns}\n item={item}\n key={rowKey}\n plugins={plugins}\n RowComponent={RowComponent}\n rowIndex={rowIndex}\n rowKey={rowKey}\n textOverflow={textOverflow}\n />\n );\n })\n : data != null &&\n emptyState !== false && (\n <tr>\n <td colSpan={Math.max(columns.length, 1)}>\n {emptyState ?? <EmptyState isCompact title=\"No data\" />}\n </td>\n </tr>\n )}\n </TableBody>\n </>\n )}\n </table>\n );\n\n if (ScrollWrapper != null) {\n tableElement = <ScrollWrapper>{tableElement}</ScrollWrapper>;\n }\n\n for (let index = plugins.length - 1; index >= 0; index--) {\n const plugin = plugins[index];\n if (plugin.transformTableContext != null) {\n try {\n tableElement = plugin.transformTableContext(tableElement);\n } catch (error) {\n console.error('[Table] Plugin threw in transformTableContext:', error);\n }\n }\n }\n\n return tableElement as ReactElement;\n}\n\nexport const BaseTable = BaseTableInner as <T extends Record<string, unknown>>(\n props: BaseTableProps<T> & {ref?: Ref<HTMLTableElement>},\n) => ReactElement;\n\n(BaseTable as {displayName?: string}).displayName = 'BaseTable';\n","import {useMemo} from 'react';\nimport type {TablePlugin} from './types';\n\nconst CANONICAL_PLUGIN_ORDER = [\n 'columnSettings',\n 'sort',\n 'selection',\n 'filtering',\n 'columnResize',\n 'pagination',\n] as const;\n\nconst CANONICAL_PLUGIN_KEYS = new Set<string>(CANONICAL_PLUGIN_ORDER);\n\nfunction orderNamedPlugins<T extends Record<string, unknown>>(\n userPlugins: Record<string, TablePlugin<T>>,\n): TablePlugin<T>[] {\n const entries = Object.entries(userPlugins);\n const pluginsByName = new Map(entries);\n const orderedPlugins = CANONICAL_PLUGIN_ORDER.filter(key =>\n pluginsByName.has(key),\n ).map(key => pluginsByName.get(key) as TablePlugin<T>);\n const customPlugins = entries\n .filter(([key]) => !CANONICAL_PLUGIN_KEYS.has(key))\n .map(([, plugin]) => plugin);\n\n return [...orderedPlugins, ...customPlugins];\n}\n\nexport function useBaseTablePlugins<T extends Record<string, unknown>>(\n basePlugins: TablePlugin<T>[],\n userPlugins?: Record<string, TablePlugin<T>> | TablePlugin<T>[],\n): TablePlugin<T>[] {\n return useMemo(() => {\n const plugins = Array.isArray(userPlugins)\n ? userPlugins\n : orderNamedPlugins(userPlugins ?? {});\n return [...basePlugins, ...plugins];\n }, [basePlugins, userPlugins]);\n}\n","import {useMemo, type ReactElement, type Ref} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {BaseTable} from './BaseTable';\nimport {TableContext} from './TableContext';\nimport type {\n BaseTableProps,\n TableContextValue,\n TableDensity,\n TableDividers,\n TablePlugin,\n TableRenderProps,\n TableTextOverflow,\n TableVerticalAlign,\n} from './types';\nimport {useBaseTablePlugins} from './useBaseTablePlugins';\n\nexport interface TableProps<T extends Record<string, unknown>> extends Omit<\n BaseTableProps<T>,\n 'plugins'\n> {\n /**\n * Spacing density for rows and cells.\n * @default 'balanced'\n */\n density?: TableDensity;\n /**\n * Which divider lines to show between cells.\n * @default 'rows'\n */\n dividers?: TableDividers;\n /**\n * Whether rows highlight on hover.\n * @default false\n */\n hasHover?: boolean;\n /**\n * Whether alternating rows have a subtle background.\n * @default false\n */\n isStriped?: boolean;\n /**\n * Plugin map or array that extends table behavior.\n */\n plugins?: Record<string, TablePlugin<T>> | TablePlugin<T>[];\n /**\n * How overflowing cell text is handled.\n * @default 'wrap'\n */\n textOverflow?: TableTextOverflow;\n /**\n * Vertical alignment of cell content.\n * @default 'middle'\n */\n verticalAlign?: TableVerticalAlign;\n}\n\nconst styles = {\n scrollWrapper: css({\n overflowX: 'auto',\n WebkitOverflowScrolling: 'touch',\n }),\n table: css({\n color: 'fg',\n fontFamily: 'body',\n }),\n} as const;\n\nfunction TableScrollWrapper({\n children,\n}: {\n children: React.ReactNode;\n}): React.JSX.Element {\n return <div className={styles.scrollWrapper}>{children}</div>;\n}\n\nfunction buildTableStylePlugin<\n T extends Record<string, unknown>,\n>(): TablePlugin<T> {\n return {\n transformTable(props: TableRenderProps): TableRenderProps {\n return {\n ...props,\n className: cx(props.className, styles.table, 'silver-table'),\n };\n },\n };\n}\n\n/**\n * Data table with configurable density, dividers, hover, and striping.\n */\nfunction TableInner<T extends Record<string, unknown>>({\n children,\n className,\n columns,\n data,\n 'data-testid': dataTestId,\n density = 'balanced',\n dividers = 'rows',\n emptyState,\n hasHover = false,\n idKey,\n isStriped = false,\n plugins: userPlugins,\n ref,\n style,\n tableProps,\n textOverflow = 'wrap',\n verticalAlign = 'middle',\n}: TableProps<T> & {ref?: Ref<HTMLTableElement>}): ReactElement {\n const tablePlugin = useMemo(() => buildTableStylePlugin<T>(), []);\n const basePlugins = useMemo(() => [tablePlugin], [tablePlugin]);\n const plugins = useBaseTablePlugins(basePlugins, userPlugins);\n const contextValue = useMemo(\n (): TableContextValue => ({\n density,\n dividers,\n hasHover,\n isStriped,\n textOverflow,\n verticalAlign,\n }),\n [density, dividers, hasHover, isStriped, textOverflow, verticalAlign],\n );\n\n return (\n <TableContext value={contextValue}>\n <BaseTable<T>\n className={className}\n columns={columns}\n data={data}\n data-testid={dataTestId}\n emptyState={emptyState}\n idKey={idKey}\n plugins={plugins}\n ref={ref}\n scrollWrapper={TableScrollWrapper}\n style={style}\n tableProps={tableProps}\n textOverflow={textOverflow}>\n {children}\n </BaseTable>\n </TableContext>\n );\n}\n\nexport const Table = TableInner as <T extends Record<string, unknown>>(\n props: TableProps<T> & {ref?: Ref<HTMLTableElement>},\n) => ReactElement;\n\n(Table as {displayName?: string}).displayName = 'Table';\n","import type {CSSProperties, ReactNode, Ref} from 'react';\n\nexport interface TableFooterProps {\n /**\n * Footer row elements rendered inside the tfoot.\n */\n children: ReactNode;\n /**\n * Additional CSS class names applied to the tfoot.\n */\n className?: string;\n /**\n * Test ID applied to the tfoot.\n */\n 'data-testid'?: string;\n /**\n * Ref forwarded to the tfoot element.\n */\n ref?: Ref<HTMLTableSectionElement>;\n /**\n * Inline styles applied to the tfoot.\n */\n style?: CSSProperties;\n}\n\n/**\n * Wraps table footer rows in a `<tfoot>` element.\n */\nexport function TableFooter({\n children,\n className,\n 'data-testid': dataTestId,\n ref,\n style,\n}: TableFooterProps): React.JSX.Element {\n return (\n <tfoot\n className={className}\n data-testid={dataTestId}\n ref={ref}\n style={style}>\n {children}\n </tfoot>\n );\n}\n\nTableFooter.displayName = 'TableFooter';\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n type CSSProperties,\n type ReactNode,\n} from 'react';\nimport {css} from 'styled-system/css';\nimport {DEFAULT_MIN_COLUMN_WIDTH} from '../../columnUtils';\nimport type {\n ColumnWidth,\n HeaderCellRenderProps,\n TableColumn,\n TablePlugin,\n} from '../../types';\n\nexport interface UseTableColumnResizeConfig {\n columns?: TableColumn<Record<string, unknown>>[];\n columnWidths?: Record<string, number>;\n maxWidth?: number;\n minWidth?: number;\n onColumnResizeEnd?: (updates: Record<string, number>) => void;\n}\n\ninterface DragState {\n columnKey: string;\n neighborIndex: number | null;\n resizeIndex: number;\n snapshots: ColumnSnapshot[];\n startX: number;\n tableWidth: number;\n}\n\ninterface ColumnSnapshot {\n initialMaxWidth: string;\n initialMinWidth: string;\n initialWidth: number;\n initialWidthStyle: string;\n key: string;\n maxWidth: number;\n minWidth: number;\n th: HTMLTableCellElement;\n}\n\ninterface PointerListeners {\n cancel: (event: PointerEvent) => void;\n move: (event: PointerEvent) => void;\n up: (event: PointerEvent) => void;\n}\n\nconst KEYBOARD_STEP = 10;\nconst KEYBOARD_LARGE_STEP = 50;\n\nconst styles = {\n handle: css({\n position: 'absolute',\n insetInlineEnd: 0,\n top: 0,\n bottom: 0,\n zIndex: 1,\n w: '4',\n cursor: 'ew-resize',\n borderWidth: 0,\n bg: 'transparent',\n p: 0,\n touchAction: 'none',\n userSelect: 'none',\n _after: {\n content: '\"\"',\n position: 'absolute',\n insetInlineEnd: 0,\n top: 0,\n bottom: 0,\n w: '2px',\n bg: 'transparent',\n transitionDuration: 'fast',\n transitionProperty: 'background-color, width',\n transitionTimingFunction: 'default',\n },\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n _hover: {\n _after: {\n bg: 'primary',\n },\n },\n '@media (pointer: coarse)': {\n display: 'none',\n },\n }),\n headerCell: css({\n overflow: 'visible',\n position: 'relative',\n }),\n} as const;\n\nfunction resolveColumnMinWidth(\n width: ColumnWidth | undefined,\n globalMinWidth: number | undefined,\n): number {\n if (globalMinWidth != null) {\n return globalMinWidth;\n }\n if (width?.type === 'pixel') {\n return width.value;\n }\n return width?.minWidth ?? DEFAULT_MIN_COLUMN_WIDTH;\n}\n\nfunction applyWidth(th: HTMLTableCellElement, width: number): void {\n th.style.width = `${width}px`;\n th.style.minWidth = `${width}px`;\n th.style.maxWidth = `${width}px`;\n}\n\nfunction isProportionalColumn(width: ColumnWidth | undefined): boolean {\n return width == null || width.type === 'proportional';\n}\n\nfunction getRTLMultiplier(element: HTMLElement): number {\n return getComputedStyle(element).direction === 'rtl' ? -1 : 1;\n}\n\nfunction computeColumnWidths(drag: DragState, delta: number): number[] {\n const widths = drag.snapshots.map(snapshot => snapshot.initialWidth);\n\n if (drag.neighborIndex != null) {\n const neighbor = drag.snapshots[drag.neighborIndex];\n const self = drag.snapshots[drag.resizeIndex];\n const maxDelta = neighbor.initialWidth - neighbor.minWidth;\n const minDelta = self.minWidth - self.initialWidth;\n const clampedDelta = Math.max(minDelta, Math.min(delta, maxDelta));\n widths[drag.resizeIndex] = self.initialWidth + clampedDelta;\n widths[drag.neighborIndex] = neighbor.initialWidth - clampedDelta;\n } else {\n const self = drag.snapshots[drag.resizeIndex];\n widths[drag.resizeIndex] = Math.min(\n self.maxWidth,\n Math.max(self.minWidth, self.initialWidth + delta),\n );\n }\n\n const lastIndex = drag.snapshots.length - 1;\n const isResizingLastColumnWithoutNeighbor =\n drag.resizeIndex === lastIndex && drag.neighborIndex == null;\n if (\n lastIndex >= 0 &&\n drag.tableWidth > 0 &&\n !isResizingLastColumnWithoutNeighbor\n ) {\n const sumOthers = widths.reduce(\n (sum, width, index) => (index === lastIndex ? sum : sum + width),\n 0,\n );\n widths[lastIndex] = Math.max(\n drag.snapshots[lastIndex].minWidth,\n drag.tableWidth - sumOthers,\n );\n }\n\n return widths;\n}\n\nfunction applyWidths(snapshots: ColumnSnapshot[], widths: number[]): void {\n snapshots.forEach((snapshot, index) => {\n applyWidth(snapshot.th, widths[index]);\n });\n}\n\nfunction restoreSnapshotStyles(snapshots: ColumnSnapshot[]): void {\n snapshots.forEach(snapshot => {\n snapshot.th.style.width = snapshot.initialWidthStyle;\n snapshot.th.style.minWidth = snapshot.initialMinWidth;\n snapshot.th.style.maxWidth = snapshot.initialMaxWidth;\n });\n}\n\nfunction buildUpdates(\n drag: DragState,\n widths: number[],\n): Record<string, number> {\n const updates: Record<string, number> = {};\n const lastIndex = drag.snapshots.length - 1;\n const isResizingLastColumnWithoutNeighbor =\n drag.resizeIndex === lastIndex && drag.neighborIndex == null;\n if (isResizingLastColumnWithoutNeighbor) {\n const snapshot = drag.snapshots[drag.resizeIndex];\n updates[snapshot.key] = Math.round(widths[drag.resizeIndex]);\n return updates;\n }\n drag.snapshots.forEach((snapshot, index) => {\n if (index === lastIndex) {\n return;\n }\n updates[snapshot.key] = Math.round(widths[index]);\n });\n return updates;\n}\n\nfunction ResizeHandle({\n columnHeader,\n columnKey,\n configRef,\n currentWidth,\n maxWidth,\n minWidth,\n neighborKey,\n}: {\n columnHeader: ReactNode;\n columnKey: string;\n configRef: React.RefObject<UseTableColumnResizeConfig>;\n currentWidth: number | undefined;\n maxWidth: number;\n minWidth: number;\n neighborKey: string | null;\n}): React.JSX.Element {\n const dragStateRef = useRef<DragState | null>(null);\n const pointerListenersRef = useRef<PointerListeners | null>(null);\n\n const removePointerListeners = useCallback(() => {\n const listeners = pointerListenersRef.current;\n if (listeners == null) {\n return;\n }\n window.removeEventListener('pointermove', listeners.move);\n window.removeEventListener('pointerup', listeners.up);\n window.removeEventListener('pointercancel', listeners.cancel);\n pointerListenersRef.current = null;\n }, []);\n\n const buildDragState = useCallback(\n (th: HTMLTableCellElement, startX: number): DragState | null => {\n const headerRow = th.parentElement;\n if (headerRow == null) {\n return null;\n }\n\n const table = th.closest('table');\n const tableWidth = table?.getBoundingClientRect().width ?? 0;\n const columns = configRef.current.columns;\n const activeHeaderIndex = Array.from(headerRow.children).indexOf(th);\n const activeColumnIndex =\n columns?.findIndex(column => column.key === columnKey) ?? -1;\n const columnIndexOffset =\n activeHeaderIndex >= 0 && activeColumnIndex >= 0\n ? activeHeaderIndex - activeColumnIndex\n : 0;\n const columnsByKey = new Map(\n columns?.map(column => [column.key, column]),\n );\n const currentWidths = configRef.current.columnWidths ?? {};\n const snapshots: ColumnSnapshot[] = [];\n\n const allHeaders = Array.from(headerRow.children).filter(\n (child): child is HTMLTableCellElement =>\n child instanceof HTMLTableCellElement,\n );\n for (const [index, header] of allHeaders.entries()) {\n const key =\n header\n .querySelector<HTMLElement>('[data-column-key]')\n ?.getAttribute('data-column-key') ??\n columns?.[index - columnIndexOffset]?.key;\n if (key == null) {\n continue;\n }\n const snapshotColumn = columnsByKey.get(key);\n if (columns != null && snapshotColumn == null) {\n continue;\n }\n if (snapshotColumn?.resizable === false) {\n continue;\n }\n\n const renderedWidth = header.getBoundingClientRect().width;\n const overrideWidth: number | undefined =\n Object.prototype.hasOwnProperty.call(currentWidths, key)\n ? currentWidths[key]\n : undefined;\n snapshots.push({\n initialMaxWidth: header.style.maxWidth,\n initialMinWidth: header.style.minWidth,\n initialWidth:\n overrideWidth ?? (renderedWidth > 0 ? renderedWidth : minWidth),\n initialWidthStyle: header.style.width,\n key,\n maxWidth: configRef.current.maxWidth ?? Number.POSITIVE_INFINITY,\n minWidth:\n snapshotColumn == null\n ? minWidth\n : resolveColumnMinWidth(\n snapshotColumn.width,\n configRef.current.minWidth,\n ),\n th: header,\n });\n }\n\n const resizeIndex = snapshots.findIndex(\n snapshot => snapshot.key === columnKey,\n );\n if (resizeIndex < 0) {\n return null;\n }\n\n const neighborIndex =\n neighborKey == null\n ? null\n : snapshots.findIndex(snapshot => snapshot.key === neighborKey);\n\n return {\n columnKey,\n neighborIndex:\n neighborIndex == null || neighborIndex < 0 ? null : neighborIndex,\n resizeIndex,\n snapshots,\n startX,\n tableWidth,\n };\n },\n [columnKey, configRef, minWidth, neighborKey],\n );\n\n const commitResize = useCallback(\n (drag: DragState, delta: number) => {\n const widths = computeColumnWidths(drag, delta);\n applyWidths(drag.snapshots, widths);\n const updates = buildUpdates(drag, widths);\n if (Object.keys(updates).length > 0) {\n configRef.current.onColumnResizeEnd?.(updates);\n }\n },\n [configRef],\n );\n\n const handlePointerMove = useCallback(\n (event: PointerEvent) => {\n const drag = dragStateRef.current;\n if (drag == null) {\n return;\n }\n const delta =\n (event.clientX - drag.startX) *\n getRTLMultiplier(drag.snapshots[drag.resizeIndex].th);\n applyWidths(drag.snapshots, computeColumnWidths(drag, delta));\n },\n [dragStateRef],\n );\n\n const handlePointerUp = useCallback(\n (event: PointerEvent) => {\n const drag = dragStateRef.current;\n removePointerListeners();\n if (drag != null) {\n const delta =\n (event.clientX - drag.startX) *\n getRTLMultiplier(drag.snapshots[drag.resizeIndex].th);\n commitResize(drag, delta);\n }\n dragStateRef.current = null;\n },\n [commitResize, dragStateRef, removePointerListeners],\n );\n\n const handlePointerCancel = useCallback(() => {\n const drag = dragStateRef.current;\n if (drag != null) {\n restoreSnapshotStyles(drag.snapshots);\n }\n removePointerListeners();\n dragStateRef.current = null;\n }, [dragStateRef, removePointerListeners]);\n\n const handlePointerDown = useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const th = event.currentTarget.closest('th');\n if (th == null) {\n return;\n }\n const drag = buildDragState(th, event.clientX);\n if (drag == null) {\n return;\n }\n dragStateRef.current = drag;\n applyWidths(drag.snapshots, computeColumnWidths(drag, 0));\n pointerListenersRef.current = {\n cancel: handlePointerCancel,\n move: handlePointerMove,\n up: handlePointerUp,\n };\n window.addEventListener('pointermove', handlePointerMove);\n window.addEventListener('pointerup', handlePointerUp);\n window.addEventListener('pointercancel', handlePointerCancel);\n },\n [\n buildDragState,\n dragStateRef,\n handlePointerCancel,\n handlePointerMove,\n handlePointerUp,\n ],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (\n event.key !== 'ArrowLeft' &&\n event.key !== 'ArrowRight' &&\n event.key !== 'Home' &&\n event.key !== 'End'\n ) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const th = event.currentTarget.closest('th');\n if (th == null) {\n return;\n }\n const drag = buildDragState(th, 0);\n if (drag == null) {\n return;\n }\n const activeSnapshot = drag.snapshots[drag.resizeIndex];\n const step = event.shiftKey ? KEYBOARD_LARGE_STEP : KEYBOARD_STEP;\n const delta =\n event.key === 'Home'\n ? activeSnapshot.minWidth - activeSnapshot.initialWidth\n : event.key === 'End'\n ? Number.isFinite(activeSnapshot.maxWidth)\n ? activeSnapshot.maxWidth - activeSnapshot.initialWidth\n : 0\n : event.key === 'ArrowLeft'\n ? -step * getRTLMultiplier(th)\n : step * getRTLMultiplier(th);\n commitResize(drag, delta);\n },\n [buildDragState, commitResize],\n );\n const headerLabel =\n typeof columnHeader === 'string' ? columnHeader : columnKey;\n\n /* eslint-disable jsx-a11y-x/no-noninteractive-element-interactions, jsx-a11y-x/no-noninteractive-tabindex -- ARIA separator uses the window splitter keyboard pattern. */\n return (\n <div\n aria-label={`Resize column ${headerLabel}`}\n aria-orientation=\"vertical\"\n aria-valuemax={Number.isFinite(maxWidth) ? maxWidth : undefined}\n aria-valuemin={minWidth}\n aria-valuenow={currentWidth}\n className={styles.handle}\n data-column-key={columnKey}\n onKeyDown={handleKeyDown}\n onPointerDown={handlePointerDown}\n role=\"separator\"\n tabIndex={0}\n />\n );\n /* eslint-enable jsx-a11y-x/no-noninteractive-element-interactions, jsx-a11y-x/no-noninteractive-tabindex */\n}\n\nexport function useTableColumnResize<T extends Record<string, unknown>>(\n config: UseTableColumnResizeConfig,\n): TablePlugin<T> {\n const configRef = useRef(config);\n useEffect(() => {\n configRef.current = config;\n }, [config]);\n\n const globalMinWidth = config.minWidth;\n const maxWidth = config.maxWidth ?? Number.POSITIVE_INFINITY;\n const columnWidths = config.columnWidths;\n const resizableColumns = useMemo(\n () => config.columns?.filter(column => column.resizable !== false),\n [config.columns],\n );\n\n return useMemo(\n (): TablePlugin<T> => ({\n transformHeaderCell(\n props: HeaderCellRenderProps,\n column: TableColumn<T>,\n ): HeaderCellRenderProps {\n if (column.resizable === false) {\n return props;\n }\n\n let neighborKey: string | null = null;\n if (resizableColumns != null && isProportionalColumn(column.width)) {\n const columnIndex = resizableColumns.findIndex(\n resizableColumn => resizableColumn.key === column.key,\n );\n const isLastResizable = columnIndex === resizableColumns.length - 1;\n if (isLastResizable) {\n return props;\n }\n if (columnIndex >= 0) {\n neighborKey = resizableColumns[columnIndex + 1]?.key ?? null;\n }\n }\n\n const overrideWidth = columnWidths?.[column.key];\n const widthStyle: CSSProperties | undefined =\n overrideWidth == null\n ? undefined\n : {\n maxWidth: `${overrideWidth}px`,\n minWidth: `${overrideWidth}px`,\n width: `${overrideWidth}px`,\n };\n const effectiveMinWidth = resolveColumnMinWidth(\n column.width,\n globalMinWidth,\n );\n\n return {\n ...props,\n className: styles.headerCell,\n htmlProps: {\n ...props.htmlProps,\n style:\n widthStyle == null\n ? props.htmlProps.style\n : {...props.htmlProps.style, ...widthStyle},\n },\n overlay: (\n <>\n {props.overlay}\n <ResizeHandle\n columnHeader={column.header ?? column.key}\n columnKey={column.key}\n configRef={configRef}\n currentWidth={overrideWidth}\n maxWidth={maxWidth}\n minWidth={effectiveMinWidth}\n neighborKey={neighborKey}\n />\n </>\n ),\n };\n },\n }),\n [columnWidths, configRef, globalMinWidth, maxWidth, resizableColumns],\n );\n}\n","import {useMemo} from 'react';\nimport type {TableColumn, TablePlugin} from '../../types';\nimport type {UseTableColumnSettingsStateConfig} from './useTableColumnSettingsState';\n\nexport interface TableColumnSettingsOption<TColumnKey extends string = string> {\n group?: string;\n isAlwaysVisible?: boolean;\n key: TColumnKey;\n label: string;\n}\n\nexport type UseTableColumnSettingsConfig<TColumnKey extends string = string> =\n UseTableColumnSettingsStateConfig<TColumnKey>;\n\nexport function useTableColumnSettings<\n T extends Record<string, unknown>,\n TColumnKey extends string = string,\n>(config: UseTableColumnSettingsConfig<TColumnKey>): TablePlugin<T> {\n return useMemo(\n (): TablePlugin<T> => ({\n transformColumns(columns: TableColumn<T>[]): TableColumn<T>[] {\n const activeSet = new Set(config.activeColumnKeys);\n const orderMap = new Map(\n config.activeColumnKeys.map((key, index) => [key, index]),\n );\n return columns\n .filter(column => activeSet.has(column.key as TColumnKey))\n .sort(\n (a, b) =>\n (orderMap.get(a.key as TColumnKey) ?? Infinity) -\n (orderMap.get(b.key as TColumnKey) ?? Infinity),\n );\n },\n }),\n [config],\n );\n}\n","import {useCallback, useMemo} from 'react';\nimport type {TableColumnSettingsOption} from './useTableColumnSettings';\n\nexport interface UseTableColumnSettingsStateConfig<\n TColumnKey extends string = string,\n> {\n activeColumnKeys: ReadonlyArray<TColumnKey>;\n columns: ReadonlyArray<TableColumnSettingsOption<TColumnKey>>;\n defaultColumnKeys?: ReadonlyArray<TColumnKey>;\n onChangeActiveColumnKeys: (keys: ReadonlyArray<TColumnKey>) => void;\n}\n\nexport interface UseTableColumnSettingsStateReturn<\n TColumnKey extends string = string,\n> {\n activeColumnKeys: ReadonlyArray<TColumnKey>;\n columnSettingsConfig: UseTableColumnSettingsStateConfig<TColumnKey>;\n getIsColumnActive: (key: TColumnKey) => boolean;\n getIsColumnToggleable: (key: TColumnKey) => boolean;\n resetToDefault: () => void;\n setActiveColumnKeys: (keys: string[]) => void;\n showAllColumns: () => void;\n toggleColumn: (key: TColumnKey) => void;\n}\n\nexport function useTableColumnSettingsState<TColumnKey extends string = string>(\n config: UseTableColumnSettingsStateConfig<TColumnKey>,\n): UseTableColumnSettingsStateReturn<TColumnKey> {\n const {activeColumnKeys, columns} = config;\n const activeSet = useMemo(\n () => new Set(activeColumnKeys),\n [activeColumnKeys],\n );\n const alwaysVisibleSet = useMemo(\n () =>\n new Set(\n columns\n .filter(column => column.isAlwaysVisible)\n .map(column => column.key),\n ),\n [columns],\n );\n\n const toggleColumn = useCallback(\n (key: TColumnKey) => {\n if (\n config.columns.some(\n column => column.key === key && column.isAlwaysVisible,\n )\n ) {\n return;\n }\n const currentSet = new Set(config.activeColumnKeys);\n config.onChangeActiveColumnKeys(\n currentSet.has(key)\n ? config.activeColumnKeys.filter(columnKey => columnKey !== key)\n : [...config.activeColumnKeys, key],\n );\n },\n [config],\n );\n const getIsColumnActive = useCallback(\n (key: TColumnKey) => activeSet.has(key),\n [activeSet],\n );\n const getIsColumnToggleable = useCallback(\n (key: TColumnKey) => !alwaysVisibleSet.has(key),\n [alwaysVisibleSet],\n );\n const showAllColumns = useCallback(() => {\n config.onChangeActiveColumnKeys(config.columns.map(column => column.key));\n }, [config]);\n const resetToDefault = useCallback(() => {\n config.onChangeActiveColumnKeys(\n config.defaultColumnKeys ?? config.columns.map(column => column.key),\n );\n }, [config]);\n const setActiveColumnKeys = useCallback(\n (keys: string[]) => {\n const next = new Set(keys as TColumnKey[]);\n for (const column of config.columns) {\n if (column.isAlwaysVisible) {\n next.add(column.key);\n }\n }\n config.onChangeActiveColumnKeys(Array.from(next));\n },\n [config],\n );\n\n return {\n activeColumnKeys,\n columnSettingsConfig: config,\n getIsColumnActive,\n getIsColumnToggleable,\n resetToDefault,\n setActiveColumnKeys,\n showAllColumns,\n toggleColumn,\n };\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {Filter} from 'lucide-react';\nimport {\n createContext,\n use,\n useCallback,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport {css} from 'styled-system/css';\nimport {\n plainDateToUnixSeconds,\n type PlainDate,\n} from '../../../../internal/plainDate';\nimport {getBrowserTimezoneID} from '../../../../internal/time';\nimport {\n createStaticSource,\n type SearchableItem,\n} from '../../../AutocompleteInput';\nimport {Button} from '../../../Button';\nimport {DateInput} from '../../../DateInput';\nimport {MultiSelect} from '../../../MultiSelect';\nimport {NumberInput} from '../../../NumberInput';\nimport {Popover} from '../../../Popover';\nimport type {\n FilterValue,\n FloatOperatorValue,\n IntegerOperatorValue,\n OperatorValue,\n SearchFilterInputConfig,\n SearchFilterInputField,\n SearchFilterInputFilter,\n SearchFilterInputOperator,\n StringListOperatorValue,\n EntityListOperatorValue,\n EnumListOperatorValue,\n EnumOperatorValue,\n} from '../../../SearchFilterInput';\nimport {Select} from '../../../Select';\nimport {TagsInput} from '../../../TagsInput';\nimport {TextInput} from '../../../TextInput';\nimport {TimeInput} from '../../../TimeInput';\nimport {proportional} from '../../columnUtils';\nimport type {\n HeaderCellRenderProps,\n TableColumn,\n TablePlugin,\n} from '../../types';\n\nexport type TableFilterValue = number | string | string[] | PlainDate;\nexport type TableFilterState = Record<string, TableFilterValue | undefined>;\nexport type TableFilterVariant = 'inline' | 'popover';\n\nexport interface TableFilterFieldRef {\n field: string;\n operator?: string;\n}\n\nexport interface UseTableFilteringConfig {\n filters: TableFilterState;\n onFilterChange: (columnKey: string, value: TableFilterValue | null) => void;\n searchConfig: SearchFilterInputConfig;\n timezoneID?: string;\n variant?: TableFilterVariant;\n}\n\ntype ToSearchFiltersConfig =\n | Pick<UseTableFilteringConfig, 'searchConfig' | 'timezoneID'>\n | SearchFilterInputConfig;\n\ninterface FilterStore {\n getConfig: () => UseTableFilteringConfig;\n}\n\nconst FilterStoreContext = createContext<FilterStore | null>(null);\nFilterStoreContext.displayName = 'TableFilterStoreContext';\n\nconst styles = {\n afterPopover: css({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n }),\n inlineWrapper: css({\n mt: '1',\n }),\n popoverActions: css({\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '2',\n mt: '2',\n }),\n popoverActionsSpacer: css({\n flex: 1,\n }),\n popoverContent: css({\n w: '60',\n }),\n} as const;\n\nfunction useFilterStore(): FilterStore {\n const store = use(FilterStoreContext);\n if (store == null) {\n throw new Error(\n 'useFilterStore must be used within a Table filtering plugin',\n );\n }\n return store;\n}\n\nfunction resolveOperator(\n field: SearchFilterInputField,\n operatorKey?: string,\n): SearchFilterInputOperator | undefined {\n if (operatorKey != null) {\n return field.operators.find(operator => operator.key === operatorKey);\n }\n if (field.defaultOperator != null) {\n return field.operators.find(\n operator => operator.key === field.defaultOperator,\n );\n }\n return field.operators[0];\n}\n\nfunction resolveFilterConfig(\n filter: string | TableFilterFieldRef,\n searchConfig: SearchFilterInputConfig,\n): OperatorValue | undefined {\n const fieldKey = typeof filter === 'string' ? filter : filter.field;\n const operatorKey = typeof filter === 'string' ? undefined : filter.operator;\n const field = searchConfig.fields.find(\n candidate => candidate.key === fieldKey,\n );\n return field == null ? undefined : resolveOperator(field, operatorKey)?.value;\n}\n\nfunction tableValueToFilterValue(\n value: TableFilterValue,\n operatorValue: OperatorValue,\n timezoneID: string,\n): FilterValue | undefined {\n switch (operatorValue.type) {\n case 'date_absolute':\n return value instanceof Temporal.PlainDate\n ? {\n type: 'date_absolute',\n unixSeconds: plainDateToUnixSeconds(value, timezoneID),\n }\n : undefined;\n case 'enum':\n return typeof value === 'string' ? {type: 'enum', value} : undefined;\n case 'enum_list':\n return Array.isArray(value) ? {type: 'enum_list', value} : undefined;\n case 'entity_list':\n return Array.isArray(value)\n ? {\n type: 'entity_list',\n value: value.map(id => ({id, label: id})),\n }\n : undefined;\n case 'float':\n return typeof value === 'number' ? {type: 'float', value} : undefined;\n case 'integer':\n return typeof value === 'number' ? {type: 'integer', value} : undefined;\n case 'string':\n return typeof value === 'string' ? {type: 'string', value} : undefined;\n case 'string_list':\n return Array.isArray(value) ? {type: 'string_list', value} : undefined;\n case 'time':\n return typeof value === 'string' ? {type: 'time', value} : undefined;\n case 'custom':\n case 'date_range':\n case 'date_relative':\n case 'empty':\n case 'nested':\n return undefined;\n }\n}\n\nexport function toSearchFilters<T extends Record<string, unknown>>(\n filters: TableFilterState,\n columns: ReadonlyArray<Pick<TableColumn<T>, 'filter' | 'key'>>,\n config: ToSearchFiltersConfig,\n timezoneID?: string,\n): SearchFilterInputFilter[] {\n const result: SearchFilterInputFilter[] = [];\n const searchConfig = 'searchConfig' in config ? config.searchConfig : config;\n const effectiveTimezoneID =\n ('searchConfig' in config ? config.timezoneID : undefined) ??\n timezoneID ??\n getBrowserTimezoneID();\n\n for (const column of columns) {\n if (column.filter == null) {\n continue;\n }\n const value = filters[column.key];\n if (value == null) {\n continue;\n }\n const fieldKey =\n typeof column.filter === 'string' ? column.filter : column.filter.field;\n const operatorKey =\n typeof column.filter === 'string' ? undefined : column.filter.operator;\n const field = searchConfig.fields.find(\n candidate => candidate.key === fieldKey,\n );\n const operator =\n field == null ? undefined : resolveOperator(field, operatorKey);\n if (operator == null) {\n continue;\n }\n const filterValue = tableValueToFilterValue(\n value,\n operator.value,\n effectiveTimezoneID,\n );\n if (filterValue != null) {\n result.push({\n field: fieldKey,\n operator: operator.key,\n value: filterValue,\n });\n }\n }\n\n return result;\n}\n\nfunction TextFilterControl({\n columnKey,\n hasClear,\n header,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n return (\n <TextInput\n hasClear={hasClear}\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextValue => {\n store\n .getConfig()\n .onFilterChange(columnKey, nextValue === '' ? null : nextValue);\n }}\n placeholder={`Filter ${header}`}\n size={size}\n value={typeof value === 'string' ? value : ''}\n />\n );\n}\n\nfunction NumberFilterControl({\n columnKey,\n hasClear,\n header,\n operatorValue,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n operatorValue: FloatOperatorValue | IntegerOperatorValue;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n const sharedProps = {\n isIntegerOnly: operatorValue.type === 'integer',\n isLabelHidden: true as const,\n label: `Filter ${header}`,\n max: operatorValue.maxValue ?? null,\n min: operatorValue.minValue ?? null,\n placeholder: `Filter ${header}`,\n size,\n step: operatorValue.type === 'integer' ? 1 : null,\n value: typeof value === 'number' ? value : null,\n };\n if (hasClear === false) {\n return (\n <NumberInput\n {...sharedProps}\n onChange={nextValue => {\n store.getConfig().onFilterChange(columnKey, nextValue);\n }}\n />\n );\n }\n return (\n <NumberInput\n {...sharedProps}\n hasClear\n onChange={nextValue => {\n store.getConfig().onFilterChange(columnKey, nextValue);\n }}\n />\n );\n}\n\nfunction SelectFilterControl({\n columnKey,\n hasClear,\n header,\n operatorValue,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n operatorValue: EnumOperatorValue;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n return (\n <Select\n hasClear={hasClear}\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextValue => {\n store.getConfig().onFilterChange(columnKey, nextValue);\n }}\n options={operatorValue.values.map(option => ({\n icon: option.icon,\n label: option.label,\n value: option.value,\n }))}\n placeholder=\"All\"\n size={size}\n value={typeof value === 'string' ? value : null}\n />\n );\n}\n\nfunction MultiSelectFilterControl({\n columnKey,\n hasClear,\n header,\n operatorValue,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n operatorValue: EnumListOperatorValue;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n return (\n <MultiSelect\n hasClear={hasClear}\n hasSearch={false}\n hasSelectAll\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextValue => {\n store\n .getConfig()\n .onFilterChange(columnKey, nextValue.length === 0 ? null : nextValue);\n }}\n options={operatorValue.values.map(option => ({\n icon: option.icon,\n label: option.label,\n value: option.value,\n }))}\n placeholder=\"All\"\n size={size}\n value={Array.isArray(value) ? value : []}\n />\n );\n}\n\nfunction DateFilterControl({\n columnKey,\n hasClear,\n header,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n return (\n <DateInput\n hasClear={hasClear}\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextValue => {\n store.getConfig().onFilterChange(columnKey, nextValue ?? null);\n }}\n placeholder={`Filter ${header}`}\n size={size}\n value={value instanceof Temporal.PlainDate ? value : undefined}\n />\n );\n}\n\nfunction TimeFilterControl({\n columnKey,\n hasClear,\n header,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n return (\n <TimeInput\n hasClear={hasClear}\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextValue => {\n store\n .getConfig()\n .onFilterChange(columnKey, nextValue?.toString() ?? null);\n }}\n placeholder={`Filter ${header}`}\n size={size}\n value={value instanceof Temporal.PlainTime ? value : undefined}\n />\n );\n}\n\nfunction ListFilterControl({\n columnKey,\n hasClear,\n header,\n operatorValue,\n size,\n}: {\n columnKey: string;\n hasClear?: boolean;\n header: string;\n operatorValue: EntityListOperatorValue | StringListOperatorValue;\n size: 'md' | 'sm';\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[columnKey];\n const items = Array.isArray(value) ? value.map(id => ({id, label: id})) : [];\n const source =\n operatorValue.searchSource ??\n createStaticSource<SearchableItem>(items, {keywords: item => [item.id]});\n\n return (\n <TagsInput\n hasClear={hasClear}\n hasCreate={operatorValue.isArbitraryStringAllowed ?? true}\n isLabelHidden\n label={`Filter ${header}`}\n onChange={nextItems => {\n const ids = nextItems.map(item => item.id);\n store\n .getConfig()\n .onFilterChange(columnKey, ids.length === 0 ? null : ids);\n }}\n placeholder={`Filter ${header}`}\n renderItem={\n operatorValue.type === 'entity_list'\n ? operatorValue.renderItem\n : undefined\n }\n searchSource={source}\n size={size}\n value={items}\n />\n );\n}\n\nfunction getHeaderText<T extends Record<string, unknown>>(\n column: TableColumn<T>,\n): string {\n return typeof column.header === 'string' ? column.header : column.key;\n}\n\nfunction FilterControl<T extends Record<string, unknown>>({\n column,\n hasClear,\n operatorValue,\n size,\n}: {\n column: TableColumn<T>;\n hasClear?: boolean;\n operatorValue: OperatorValue;\n size: 'md' | 'sm';\n}): React.JSX.Element | null {\n const header = getHeaderText(column);\n switch (operatorValue.type) {\n case 'date_absolute':\n return (\n <DateFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n size={size}\n />\n );\n case 'enum':\n return (\n <SelectFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n operatorValue={operatorValue}\n size={size}\n />\n );\n case 'enum_list':\n return (\n <MultiSelectFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n operatorValue={operatorValue}\n size={size}\n />\n );\n case 'entity_list':\n case 'string_list':\n return (\n <ListFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n operatorValue={operatorValue}\n size={size}\n />\n );\n case 'float':\n case 'integer':\n return (\n <NumberFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n operatorValue={operatorValue}\n size={size}\n />\n );\n case 'string':\n return (\n <TextFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n size={size}\n />\n );\n case 'time':\n return (\n <TimeFilterControl\n columnKey={column.key}\n hasClear={hasClear}\n header={header}\n size={size}\n />\n );\n case 'custom':\n case 'date_range':\n case 'date_relative':\n case 'empty':\n case 'nested':\n return null;\n }\n}\n\nfunction PopoverFilterTrigger<T extends Record<string, unknown>>({\n column,\n operatorValue,\n}: {\n column: TableColumn<T>;\n operatorValue: OperatorValue;\n}): React.JSX.Element {\n const store = useFilterStore();\n const value = store.getConfig().filters[column.key];\n const isActive = value != null;\n const [isOpen, setIsOpen] = useState(false);\n const [draft, setDraft] = useState<TableFilterValue | null>(null);\n\n const handleOpenChange = useCallback(\n (isOpenNext: boolean) => {\n if (isOpenNext) {\n setDraft(value ?? null);\n }\n setIsOpen(isOpenNext);\n },\n [value],\n );\n\n const handleApply = useCallback(() => {\n store.getConfig().onFilterChange(column.key, draft);\n setIsOpen(false);\n }, [column.key, draft, store]);\n\n const handleReset = useCallback(() => {\n store.getConfig().onFilterChange(column.key, null);\n setDraft(null);\n setIsOpen(false);\n }, [column.key, store]);\n\n const draftStore = useMemo<FilterStore>(\n () => ({\n getConfig() {\n const config = store.getConfig();\n return {\n ...config,\n filters: {\n ...config.filters,\n [column.key]: draft ?? undefined,\n },\n onFilterChange: (_columnKey, nextValue) => {\n setDraft(nextValue);\n },\n };\n },\n }),\n [column.key, draft, store],\n );\n\n return (\n <Popover\n content={\n <FilterStoreContext value={draftStore}>\n <div className={styles.popoverContent}>\n <FilterControl\n column={column}\n hasClear={false}\n operatorValue={operatorValue}\n size=\"sm\"\n />\n <div className={styles.popoverActions}>\n <Button\n label=\"Reset\"\n onClick={handleReset}\n size=\"sm\"\n variant=\"ghost\"\n />\n <div className={styles.popoverActionsSpacer} />\n <Button\n label=\"Apply\"\n onClick={handleApply}\n size=\"sm\"\n variant=\"primary\"\n />\n </div>\n </div>\n </FilterStoreContext>\n }\n isOpen={isOpen}\n label={`Filter ${getHeaderText(column)}`}\n onOpenChange={handleOpenChange}\n padding={3}\n placement=\"below\">\n <Button\n icon={Filter}\n isIconOnly\n label={`Filter ${getHeaderText(column)}`}\n size=\"sm\"\n variant={isActive ? 'primary' : 'ghost'}\n />\n </Popover>\n );\n}\n\nexport function useTableFiltering<T extends Record<string, unknown>>(\n config: UseTableFilteringConfig,\n): TablePlugin<T> {\n const {variant = 'popover'} = config;\n\n const store = useMemo<FilterStore>(\n () => ({\n getConfig: () => config,\n }),\n [config],\n );\n\n return useMemo(\n (): TablePlugin<T> => ({\n transformColumns:\n variant === 'inline'\n ? (columns: TableColumn<T>[]): TableColumn<T>[] =>\n columns.map(column => {\n if (column.filter != null && column.width == null) {\n return {...column, width: proportional(1)};\n }\n return column;\n })\n : undefined,\n transformHeaderCell(\n props: HeaderCellRenderProps,\n column: TableColumn<T>,\n ): HeaderCellRenderProps {\n if (column.filter == null) {\n if (variant === 'inline') {\n return {\n ...props,\n htmlProps: {\n ...props.htmlProps,\n style: {\n ...props.htmlProps.style,\n verticalAlign: 'bottom',\n },\n },\n };\n }\n return props;\n }\n const operatorValue = resolveFilterConfig(\n column.filter,\n config.searchConfig,\n );\n if (operatorValue == null) {\n return props;\n }\n\n if (variant === 'popover') {\n return {\n ...props,\n after: (\n <span className={styles.afterPopover}>\n <PopoverFilterTrigger\n column={column}\n operatorValue={operatorValue}\n />\n </span>\n ),\n };\n }\n\n return {\n ...props,\n below: (\n <>\n {props.below}\n <div className={styles.inlineWrapper}>\n <FilterControl\n column={column}\n hasClear\n operatorValue={operatorValue}\n size=\"sm\"\n />\n </div>\n </>\n ),\n };\n },\n transformTableContext(children: ReactNode): ReactNode {\n return (\n <FilterStoreContext value={store}>{children}</FilterStoreContext>\n );\n },\n }),\n [config.searchConfig, store, variant],\n );\n}\n","import {useCallback, useState} from 'react';\nimport type {TableFilterState, TableFilterValue} from './useTableFiltering';\n\nexport interface UseTableFilterStateResult {\n clearAll: () => void;\n filters: TableFilterState;\n onFilterChange: (key: string, value: TableFilterValue | null) => void;\n}\n\nexport function useTableFilterState(\n initialState?: TableFilterState,\n): UseTableFilterStateResult {\n const [filters, setFilters] = useState<TableFilterState>(initialState ?? {});\n const onFilterChange = useCallback(\n (key: string, value: TableFilterValue | null) => {\n setFilters(previous => {\n if (value == null) {\n const {[key]: _removed, ...next} = previous;\n return next;\n }\n return {...previous, [key]: value};\n });\n },\n [],\n );\n const clearAll = useCallback(() => setFilters({}), []);\n\n return {clearAll, filters, onFilterChange};\n}\n","export interface PaginateDataOptions {\n page: number;\n pageSize: number;\n}\n\nexport function paginateData<T>(\n data: ReadonlyArray<T>,\n {page, pageSize}: PaginateDataOptions,\n): T[] {\n const safePage = Math.max(1, page);\n const safePageSize = Math.max(1, pageSize);\n const start = (safePage - 1) * safePageSize;\n return data.slice(start, start + safePageSize);\n}\n","import {useMemo, type ReactNode} from 'react';\nimport {css} from 'styled-system/css';\nimport {Pagination, type PaginationProps} from '../../../Pagination';\nimport type {TablePlugin} from '../../types';\n\nexport interface UseTablePaginationConfig {\n align?: 'center' | 'end' | 'start';\n hasMore?: boolean;\n label?: string;\n onPageChange: (page: number) => void;\n page: number;\n pageSize?: number;\n position?: 'above' | 'below' | 'both' | 'none';\n size?: 'lg' | 'md' | 'sm';\n totalItems?: number;\n totalPages?: number;\n variant?: 'compact' | 'count' | 'none' | 'pages';\n}\n\nconst styles = {\n align: {\n center: css({justifyContent: 'center'}),\n end: css({justifyContent: 'flex-end'}),\n start: css({justifyContent: 'flex-start'}),\n },\n below: css({mt: '2'}),\n root: css({display: 'flex'}),\n above: css({mb: '2'}),\n} as const;\n\nexport function useTablePagination<T extends Record<string, unknown>>({\n align = 'center',\n hasMore,\n label = 'Table pagination',\n onPageChange,\n page,\n pageSize = 10,\n position = 'below',\n size = 'md',\n totalItems,\n totalPages,\n variant = 'pages',\n}: UseTablePaginationConfig): TablePlugin<T> {\n const computedTotalPages =\n totalPages ??\n (totalItems == null ? undefined : Math.ceil(totalItems / pageSize));\n const paginationProps = useMemo(\n (): PaginationProps => ({\n hasMore,\n label,\n onChange: onPageChange,\n page,\n pageSize,\n size,\n ...(totalItems != null\n ? {totalItems}\n : computedTotalPages != null\n ? {totalPages: computedTotalPages}\n : {}),\n variant,\n }),\n [\n computedTotalPages,\n hasMore,\n label,\n onPageChange,\n page,\n pageSize,\n size,\n totalItems,\n variant,\n ],\n );\n return useMemo(\n (): TablePlugin<T> => ({\n transformTableContext(children: ReactNode): ReactNode {\n const current = {align, paginationProps, position};\n if (current.position === 'none') {\n return children;\n }\n if (computedTotalPages === 1 && hasMore !== true) {\n return children;\n }\n\n const makePagination = (side: 'above' | 'below') => (\n <div\n className={`${styles.root} ${styles.align[current.align]} ${\n side === 'above' ? styles.above : styles.below\n }`}>\n <Pagination {...current.paginationProps} />\n </div>\n );\n\n return (\n <>\n {current.position === 'above' || current.position === 'both'\n ? makePagination('above')\n : null}\n {children}\n {current.position === 'below' || current.position === 'both'\n ? makePagination('below')\n : null}\n </>\n );\n },\n }),\n [align, computedTotalPages, hasMore, paginationProps, position],\n );\n}\n","import {\n createContext,\n use,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useSyncExternalStore,\n type ReactNode,\n type RefCallback,\n} from 'react';\nimport {css} from 'styled-system/css';\nimport {mergeRefs} from '../../../../internal/mergeRefs';\nimport {CheckboxInput} from '../../../CheckboxInput';\nimport {pixel} from '../../columnUtils';\nimport type {BodyRowRenderProps, TableColumn, TablePlugin} from '../../types';\n\nexport interface UseTableSelectionConfig<T extends Record<string, unknown>> {\n getIsAllSelected: () => boolean;\n getIsIndeterminate?: () => boolean;\n getIsItemEnabled?: (item: T) => boolean;\n getIsItemSelectable?: (item: T) => boolean;\n getIsItemSelected: (item: T) => boolean;\n onSelectAll: (event: {isAllSelected: boolean}) => void;\n onSelectItem: (event: {isSelected: boolean; item: T}) => void;\n}\n\nconst styles = {\n center: css({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n selectedRow: css({\n bg: 'bg.selected',\n }),\n} as const;\n\nconst SELECTION_COLUMN_KEY = '__table_selection';\n\ninterface SelectionStore<T extends Record<string, unknown>> {\n getConfig: () => UseTableSelectionConfig<T>;\n notify: () => void;\n subscribe: (listener: () => void) => () => void;\n}\n\nfunction createSelectionStore<T extends Record<string, unknown>>(configRef: {\n current: UseTableSelectionConfig<T>;\n}): SelectionStore<T> {\n const listeners = new Set<() => void>();\n\n return {\n getConfig: () => configRef.current,\n notify: () => {\n for (const listener of listeners) {\n listener();\n }\n },\n subscribe: listener => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n };\n}\n\nfunction applyRowSelectionStyle(\n element: HTMLTableRowElement,\n isSelected: boolean,\n): void {\n element.classList.toggle(styles.selectedRow, isSelected);\n if (isSelected) {\n element.setAttribute('aria-selected', 'true');\n } else {\n element.removeAttribute('aria-selected');\n }\n}\n\nconst ITEM_SELECTED = 1;\nconst ITEM_SELECTABLE = 2;\nconst ITEM_ENABLED = 4;\n\nfunction getItemSelectionSnapshot<T extends Record<string, unknown>>(\n config: UseTableSelectionConfig<T>,\n item: T,\n): number {\n const isSelected = config.getIsItemSelected(item);\n const isSelectable = config.getIsItemSelectable?.(item) ?? true;\n const isEnabled = config.getIsItemEnabled?.(item) ?? true;\n\n return (\n (isSelected ? ITEM_SELECTED : 0) |\n (isSelectable ? ITEM_SELECTABLE : 0) |\n (isEnabled ? ITEM_ENABLED : 0)\n );\n}\n\nconst SELECT_NONE = 0;\nconst SELECT_INDETERMINATE = 1;\nconst SELECT_ALL = 2;\n\nconst SelectionStoreContext = createContext<SelectionStore<\n Record<string, unknown>\n> | null>(null);\nSelectionStoreContext.displayName = 'TableSelectionStoreContext';\n\nfunction SelectAllCheckbox<T extends Record<string, unknown>>(): ReactNode {\n const store = use(SelectionStoreContext) as SelectionStore<T> | null;\n if (store == null) {\n return null;\n }\n\n return <SelectAllCheckboxInner store={store} />;\n}\n\nfunction SelectAllCheckboxInner<T extends Record<string, unknown>>({\n store,\n}: {\n store: SelectionStore<T>;\n}): ReactNode {\n const getSnapshot = useCallback(() => {\n const config = store.getConfig();\n if (config.getIsAllSelected()) {\n return SELECT_ALL;\n }\n return config.getIsIndeterminate?.() === true\n ? SELECT_INDETERMINATE\n : SELECT_NONE;\n }, [store]);\n const state = useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n const isAllSelected = state === SELECT_ALL;\n\n return (\n <CheckboxInput\n isLabelHidden\n label=\"Select all rows\"\n onChange={() => {\n store.getConfig().onSelectAll({\n isAllSelected: !isAllSelected,\n });\n }}\n size=\"sm\"\n value={\n isAllSelected\n ? true\n : state === SELECT_INDETERMINATE\n ? 'indeterminate'\n : false\n }\n />\n );\n}\n\nfunction SelectionCellContent<T extends Record<string, unknown>>({\n item,\n}: {\n item: T;\n}): ReactNode {\n const store = use(SelectionStoreContext) as SelectionStore<T> | null;\n if (store == null) {\n return null;\n }\n\n return <SelectionCellContentInner item={item} store={store} />;\n}\n\nfunction SelectionCellContentInner<T extends Record<string, unknown>>({\n item,\n store,\n}: {\n item: T;\n store: SelectionStore<T>;\n}): ReactNode {\n const getSnapshot = useCallback(\n () => getItemSelectionSnapshot(store.getConfig(), item),\n [item, store],\n );\n const state = useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);\n const isSelected = (state & ITEM_SELECTED) !== 0;\n const isSelectable = (state & ITEM_SELECTABLE) !== 0;\n const isEnabled = (state & ITEM_ENABLED) !== 0;\n\n if (!isSelectable) {\n return null;\n }\n\n return (\n <CheckboxInput\n isDisabled={!isEnabled}\n isLabelHidden\n label=\"Select row\"\n onChange={() => {\n store.getConfig().onSelectItem({isSelected: !isSelected, item});\n }}\n size=\"sm\"\n value={isSelected}\n />\n );\n}\n\nexport function useTableSelection<T extends Record<string, unknown>>(\n config: UseTableSelectionConfig<T>,\n): TablePlugin<T> {\n /* eslint-disable @eslint-react/refs -- external store keeps plugin identity stable while exposing the latest selection config */\n const configRef = useRef(config);\n configRef.current = config;\n\n const storeRef = useRef<SelectionStore<T> | null>(null);\n storeRef.current ??= createSelectionStore(configRef);\n const store = storeRef.current;\n /* eslint-enable @eslint-react/refs */\n\n useEffect(() => {\n store.notify();\n });\n\n const selectionColumn = useMemo(\n (): TableColumn<T> => ({\n header: (\n <div className={styles.center}>\n <SelectAllCheckbox<T> />\n </div>\n ),\n key: SELECTION_COLUMN_KEY,\n renderCell: item => (\n <div className={styles.center}>\n <SelectionCellContent item={item} />\n </div>\n ),\n resizable: false,\n width: pixel(36),\n }),\n [],\n );\n\n return useMemo(\n (): TablePlugin<T> => ({\n transformTableContext(children: ReactNode): ReactNode {\n return (\n <SelectionStoreContext\n value={store as unknown as SelectionStore<Record<string, unknown>>}>\n {children}\n </SelectionStoreContext>\n );\n },\n transformBodyRow(props: BodyRowRenderProps, item: T): BodyRowRenderProps {\n let unsubscribe: (() => void) | null = null;\n const selectionRef: RefCallback<HTMLTableRowElement> = element => {\n unsubscribe?.();\n unsubscribe = null;\n\n if (element == null) {\n return;\n }\n\n applyRowSelectionStyle(\n element,\n store.getConfig().getIsItemSelected(item),\n );\n unsubscribe = store.subscribe(() => {\n if (!element.isConnected) {\n unsubscribe?.();\n unsubscribe = null;\n return;\n }\n applyRowSelectionStyle(\n element,\n store.getConfig().getIsItemSelected(item),\n );\n });\n };\n\n return {\n ...props,\n ref:\n props.ref == null\n ? selectionRef\n : mergeRefs(props.ref, selectionRef),\n };\n },\n transformColumns(columns: TableColumn<T>[]): TableColumn<T>[] {\n return [selectionColumn, ...columns];\n },\n }),\n [selectionColumn, store],\n );\n}\n","import {useCallback, useMemo} from 'react';\nimport type {UseTableSelectionConfig} from './useTableSelection';\n\nexport interface UseTableSelectionStateConfig<\n T extends Record<string, unknown>,\n> {\n data: T[];\n getIsItemEnabled?: (item: T) => boolean;\n getIsItemSelectable?: (item: T) => boolean;\n idKey: (keyof T & string) | ((item: T) => string);\n selectedKeys: Set<string>;\n setSelectedKeys: React.Dispatch<React.SetStateAction<Set<string>>>;\n}\n\nexport interface UseTableSelectionStateResult<\n T extends Record<string, unknown>,\n> {\n selectionConfig: UseTableSelectionConfig<T>;\n}\n\nconst stableTrue = () => true;\n\nexport function useTableSelectionState<T extends Record<string, unknown>>({\n data,\n getIsItemEnabled = stableTrue,\n getIsItemSelectable = stableTrue,\n idKey,\n selectedKeys,\n setSelectedKeys,\n}: UseTableSelectionStateConfig<T>): UseTableSelectionStateResult<T> {\n const getId = useCallback(\n (item: T): string =>\n typeof idKey === 'function' ? idKey(item) : String(item[idKey]),\n [idKey],\n );\n\n const getIsActionable = useCallback(\n (item: T) => getIsItemSelectable(item) && getIsItemEnabled(item),\n [getIsItemEnabled, getIsItemSelectable],\n );\n const actionableIDs = useMemo(\n () => new Set(data.filter(getIsActionable).map(getId)),\n [data, getId, getIsActionable],\n );\n const frozenSelectedIDs = useMemo(() => {\n const frozen = new Set<string>();\n for (const id of selectedKeys) {\n if (!actionableIDs.has(id)) {\n frozen.add(id);\n }\n }\n return frozen;\n }, [actionableIDs, selectedKeys]);\n const allSelectableIDs = useMemo(\n () => new Set([...selectedKeys, ...actionableIDs]),\n [actionableIDs, selectedKeys],\n );\n\n const onSelectAll = useCallback(\n ({isAllSelected}: {isAllSelected: boolean}) => {\n setSelectedKeys(isAllSelected ? allSelectableIDs : frozenSelectedIDs);\n },\n [allSelectableIDs, frozenSelectedIDs, setSelectedKeys],\n );\n const onSelectItem = useCallback(\n ({isSelected, item}: {isSelected: boolean; item: T}) => {\n setSelectedKeys(previous => {\n const next = new Set(previous);\n const id = getId(item);\n if (isSelected) {\n next.add(id);\n } else {\n next.delete(id);\n }\n return next;\n });\n },\n [getId, setSelectedKeys],\n );\n const getIsAllSelected = useCallback(\n () =>\n allSelectableIDs.size > 0 && allSelectableIDs.size === selectedKeys.size,\n [allSelectableIDs, selectedKeys],\n );\n const getIsIndeterminate = useCallback(() => {\n const selectedActionableCount = data.filter(\n item => getIsActionable(item) && selectedKeys.has(getId(item)),\n ).length;\n return (\n selectedActionableCount > 0 &&\n selectedActionableCount < actionableIDs.size\n );\n }, [actionableIDs.size, data, getId, getIsActionable, selectedKeys]);\n\n const selectionConfig = useMemo(\n (): UseTableSelectionConfig<T> => ({\n getIsAllSelected,\n getIsIndeterminate,\n getIsItemEnabled,\n getIsItemSelectable,\n getIsItemSelected: item => selectedKeys.has(getId(item)),\n onSelectAll,\n onSelectItem,\n }),\n [\n getId,\n getIsAllSelected,\n getIsIndeterminate,\n getIsItemEnabled,\n getIsItemSelectable,\n onSelectAll,\n onSelectItem,\n selectedKeys,\n ],\n );\n\n return {selectionConfig};\n}\n","import {ArrowDown, ArrowUp, ChevronsUpDown} from 'lucide-react';\nimport {useMemo, type ReactNode} from 'react';\nimport {css} from 'styled-system/css';\nimport {Icon} from '../../../Icon';\nimport type {\n HeaderCellRenderProps,\n TableColumn,\n TablePlugin,\n} from '../../types';\n\nexport type TableSortDirection = 'ascending' | 'descending';\n\nexport interface TableSortEntry<TSortKey extends string = string> {\n direction: TableSortDirection;\n sortKey: TSortKey;\n}\n\nexport type TableSortState<TSortKey extends string = string> =\n TableSortEntry<TSortKey>[];\n\nexport interface UseTableSortableConfig<TSortKey extends string = string> {\n hasUnsortedState?: boolean;\n isMultiSortEnabled?: boolean;\n onSortChange: (sort: TableSortState<TSortKey>) => void;\n sort: TableSortState<TSortKey>;\n}\n\nconst styles = {\n button: css({\n display: 'flex',\n alignItems: 'center',\n gap: '1',\n w: 'full',\n h: 'full',\n p: 0,\n m: 0,\n borderWidth: 0,\n borderRadius: 'sm',\n bg: 'transparent',\n color: 'inherit',\n cursor: 'pointer',\n font: 'inherit',\n textAlign: 'inherit',\n _focusVisible: {\n outlineWidth: 'focus',\n outlineStyle: 'solid',\n outlineColor: 'primary',\n outlineOffset: 'focusOffset',\n },\n '&:is(:hover, [data-hover]) [data-table-sort-icon-state=\"inactive\"], &:is(:focus-visible, [data-focus-visible]) [data-table-sort-icon-state=\"inactive\"]':\n {\n opacity: 1,\n },\n }),\n icon: css({\n display: 'inline-flex',\n flexShrink: 0,\n color: 'fg.muted',\n }),\n iconInactive: css({\n opacity: 0.35,\n }),\n iconActive: css({\n color: 'primary',\n }),\n label: css({\n minW: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n rank: css({\n color: 'primary',\n fontSize: '2xs',\n lineHeight: 1,\n }),\n} as const;\n\nfunction resolveSortKey<T extends Record<string, unknown>>(\n column: TableColumn<T>,\n): string | null {\n if (!column.sortable) {\n return null;\n }\n return column.sortable === true\n ? column.key\n : (column.sortable.sortKey ?? column.key);\n}\n\nfunction getHeaderLabel<T extends Record<string, unknown>>(\n column: TableColumn<T>,\n): string {\n return typeof column.header === 'string' ? column.header : column.key;\n}\n\nfunction getNextDirection(\n current: TableSortDirection | null,\n hasUnsortedState: boolean,\n): TableSortDirection | null {\n if (current == null) {\n return 'ascending';\n }\n if (current === 'ascending') {\n return 'descending';\n }\n return hasUnsortedState ? null : 'ascending';\n}\n\nfunction SortHeaderButton<T extends Record<string, unknown>>({\n children,\n column,\n config,\n}: {\n children: ReactNode;\n column: TableColumn<T>;\n config: UseTableSortableConfig;\n}): React.JSX.Element {\n const sortKey = resolveSortKey(column) ?? '';\n const entryIndex = config.sort.findIndex(entry => entry.sortKey === sortKey);\n const entry = entryIndex >= 0 ? config.sort[entryIndex] : null;\n const direction = entry?.direction ?? null;\n const rank =\n config.isMultiSortEnabled === true &&\n config.sort.length > 1 &&\n entryIndex >= 0\n ? entryIndex + 1\n : null;\n const SortIcon =\n direction === 'ascending'\n ? ArrowUp\n : direction === 'descending'\n ? ArrowDown\n : ChevronsUpDown;\n const label = getHeaderLabel(column);\n const ariaLabel =\n direction == null\n ? `Sort by ${label}`\n : `Sort by ${label}, sorted ${direction}${\n rank == null ? '' : `, priority ${rank} of ${config.sort.length}`\n }`;\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n const nextConfig = config;\n const isMultiSort =\n event.shiftKey && nextConfig.isMultiSortEnabled === true;\n const allowUnsorted = nextConfig.hasUnsortedState ?? true;\n\n if (isMultiSort) {\n const index = nextConfig.sort.findIndex(sort => sort.sortKey === sortKey);\n if (index >= 0) {\n const nextDirection = getNextDirection(\n nextConfig.sort[index].direction,\n allowUnsorted,\n );\n const nextSort = [...nextConfig.sort];\n if (nextDirection == null) {\n nextSort.splice(index, 1);\n } else {\n nextSort[index] = {...nextSort[index], direction: nextDirection};\n }\n nextConfig.onSortChange(nextSort);\n } else {\n nextConfig.onSortChange([\n ...nextConfig.sort,\n {direction: 'ascending', sortKey},\n ]);\n }\n return;\n }\n\n const currentEntry = nextConfig.sort.find(sort => sort.sortKey === sortKey);\n const nextDirection = getNextDirection(\n currentEntry?.direction ?? null,\n allowUnsorted,\n );\n nextConfig.onSortChange(\n nextDirection == null ? [] : [{direction: nextDirection, sortKey}],\n );\n };\n\n return (\n <button\n aria-label={ariaLabel}\n className={styles.button}\n onClick={handleClick}\n type=\"button\">\n <span className={styles.label}>{children}</span>\n <span\n className={`${styles.icon} ${\n direction == null ? styles.iconInactive : styles.iconActive\n }`}\n data-table-sort-icon-state={direction == null ? 'inactive' : 'active'}\n data-testid={`table-sort-icon-${sortKey}`}>\n <Icon icon={SortIcon} size=\"sm\" />\n </span>\n {rank == null ? null : (\n <span aria-hidden=\"true\" className={styles.rank}>\n {rank}\n </span>\n )}\n </button>\n );\n}\n\nexport function useTableSortable<\n T extends Record<string, unknown>,\n TSortKey extends string = string,\n>(config: UseTableSortableConfig<TSortKey>): TablePlugin<T> {\n const sortableConfig = config as unknown as UseTableSortableConfig;\n\n return useMemo(\n (): TablePlugin<T> => ({\n transformHeaderCell(\n props: HeaderCellRenderProps,\n column: TableColumn<T>,\n ): HeaderCellRenderProps {\n const sortKey = resolveSortKey(column);\n if (sortKey == null) {\n return props;\n }\n const entry = sortableConfig.sort.find(\n sort => sort.sortKey === sortKey,\n );\n return {\n ...props,\n content: (\n <SortHeaderButton column={column} config={sortableConfig}>\n {props.content}\n </SortHeaderButton>\n ),\n htmlProps: {\n ...props.htmlProps,\n ...(entry == null ? {} : {'aria-sort': entry.direction}),\n },\n };\n },\n }),\n [sortableConfig],\n );\n}\n","import {Temporal} from '@js-temporal/polyfill';\nimport {useCallback, useMemo, useState} from 'react';\nimport type {TableSortState, UseTableSortableConfig} from './useTableSortable';\n\nexport type TableSortComparator<T> = (a: T, b: T) => number;\n\nexport interface UseTableSortableStateConfig<\n T extends Record<string, unknown>,\n TSortKey extends string = string,\n> {\n comparators?: Partial<Record<TSortKey, TableSortComparator<T>>>;\n data: T[];\n defaultSort?: TableSortState<TSortKey>;\n hasUnsortedState?: boolean;\n isMultiSortEnabled?: boolean;\n onSortChange?: (sort: TableSortState<TSortKey>) => void;\n sort?: TableSortState<TSortKey>;\n}\n\nexport interface UseTableSortableStateResult<\n T extends Record<string, unknown>,\n TSortKey extends string = string,\n> {\n applySort: (data: T[]) => T[];\n sort: TableSortState<TSortKey>;\n sortConfig: UseTableSortableConfig<TSortKey>;\n sortedData: T[];\n}\n\nfunction stringifySortable(value: unknown): string {\n if (\n value instanceof Temporal.Instant ||\n value instanceof Temporal.PlainDate ||\n value instanceof Temporal.PlainDateTime ||\n value instanceof Temporal.PlainTime ||\n value instanceof Temporal.ZonedDateTime\n ) {\n return value.toString();\n }\n if (\n typeof value === 'bigint' ||\n typeof value === 'boolean' ||\n typeof value === 'number' ||\n typeof value === 'string'\n ) {\n return String(value);\n }\n return '';\n}\n\nfunction defaultCompare<T extends Record<string, unknown>>(\n a: T,\n b: T,\n sortKey: string,\n): number {\n const left = a[sortKey];\n const right = b[sortKey];\n if (left == null && right == null) {\n return 0;\n }\n if (left == null) {\n return 1;\n }\n if (right == null) {\n return -1;\n }\n if (typeof left === 'number' && typeof right === 'number') {\n return left - right;\n }\n return stringifySortable(left).localeCompare(\n stringifySortable(right),\n undefined,\n {\n numeric: true,\n },\n );\n}\n\nexport function useTableSortableState<\n T extends Record<string, unknown>,\n TSortKey extends string = string,\n>({\n hasUnsortedState,\n comparators,\n data,\n defaultSort = [],\n isMultiSortEnabled,\n onSortChange: controlledOnSortChange,\n sort: controlledSort,\n}: UseTableSortableStateConfig<T, TSortKey>): UseTableSortableStateResult<\n T,\n TSortKey\n> {\n const [uncontrolledSort, setUncontrolledSort] =\n useState<TableSortState<TSortKey>>(defaultSort);\n const sort = controlledSort ?? uncontrolledSort;\n const onSortChange = useCallback(\n (nextSort: TableSortState<TSortKey>) => {\n if (controlledSort == null) {\n setUncontrolledSort(nextSort);\n }\n controlledOnSortChange?.(nextSort);\n },\n [controlledOnSortChange, controlledSort],\n );\n\n const applySort = useCallback(\n (items: T[]): T[] => {\n if (sort.length === 0) {\n return items;\n }\n return [...items].sort((a, b) => {\n for (const entry of sort) {\n const customCompare = comparators?.[entry.sortKey];\n const result =\n customCompare == null\n ? defaultCompare(a, b, entry.sortKey)\n : customCompare(a, b);\n if (result !== 0) {\n return entry.direction === 'ascending' ? result : -result;\n }\n }\n return 0;\n });\n },\n [comparators, sort],\n );\n const sortedData = useMemo(() => applySort(data), [applySort, data]);\n const sortConfig = useMemo(\n (): UseTableSortableConfig<TSortKey> => ({\n hasUnsortedState,\n isMultiSortEnabled,\n onSortChange,\n sort,\n }),\n [hasUnsortedState, isMultiSortEnabled, onSortChange, sort],\n );\n\n return {applySort, sort, sortConfig, sortedData};\n}\n"]}
@@ -2,7 +2,7 @@ import { useInputGroup } from './chunk-4M2KCZMO.js';
2
2
  import { inputStyles, inputRecipe } from './chunk-3M23WX6K.js';
3
3
  import { getNecessity, Field } from './chunk-K6CQ45C2.js';
4
4
  import { getStatusMessageID, getDescribedBy, getStatusIcon } from './chunk-WOIWI2UO.js';
5
- import { Button } from './chunk-RRNT32KY.js';
5
+ import { Button } from './chunk-HLN3JQYD.js';
6
6
  import { Spinner } from './chunk-S54CKWKV.js';
7
7
  import { Icon } from './chunk-7T3SWOY7.js';
8
8
  import { cx } from './chunk-PPNETWIP.js';
@@ -206,5 +206,5 @@ function NumberInput({
206
206
  NumberInput.displayName = "NumberInput";
207
207
 
208
208
  export { NumberInput };
209
- //# sourceMappingURL=chunk-STSR3FAC.js.map
210
- //# sourceMappingURL=chunk-STSR3FAC.js.map
209
+ //# sourceMappingURL=chunk-ISYUZ5FS.js.map
210
+ //# sourceMappingURL=chunk-ISYUZ5FS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/NumberInput/NumberInput.tsx"],"names":[],"mappings":"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","file":"chunk-STSR3FAC.js","sourcesContent":["import {X} from 'lucide-react';\nimport {\n useId,\n useMemo,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {Button} from '../Button';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from '../Field';\nimport {inputRecipe, inputStyles} from '../Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from '../Field/inputUtils';\nimport {Icon, type IconComponent} from '../Icon';\nimport {useInputGroup} from '../InputGroup';\nimport {Spinner} from '../Spinner';\n\ntype NumberInputBaseProps = {\n /**\n * HTML autocomplete attribute value.\n */\n autoComplete?: string;\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the input, before the status icon.\n */\n endContent?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to restrict input to integer values only.\n * @default false\n */\n isIntegerOnly?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is in a loading state.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon rendered beside the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum allowed value.\n */\n max?: number | null;\n /**\n * Minimum allowed value.\n */\n min?: number | null;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called when Enter is pressed.\n */\n onEnter?: () => void;\n /**\n * Called when the input receives focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Keyboard event handler for the input.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Step increment for the number input.\n */\n step?: number | null;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Unit label displayed after the input value.\n */\n units?: string | null;\n /**\n * Controlled numeric value.\n */\n value: number | null;\n} & FieldNecessity;\n\ntype NumberInputNonClearableProps = NumberInputBaseProps & {\n /**\n * Whether to show a clear button.\n */\n hasClear?: false;\n /**\n * Called when the numeric value changes.\n */\n onChange: (value: number) => void;\n};\n\ntype NumberInputClearableProps = NumberInputBaseProps & {\n /**\n * Whether to show a clear button.\n */\n hasClear: true;\n /**\n * Called when the numeric value changes or is cleared.\n */\n onChange: (value: number | null) => void;\n};\n\nexport type NumberInputProps =\n | NumberInputClearableProps\n | NumberInputNonClearableProps;\n\nconst styles = {\n units: css({\n color: 'fg.muted',\n fontFamily: 'body',\n fontSize: 'sm',\n }),\n} as const;\n\nfunction parseNumberInput(\n input: string,\n options: {isIntegerOnly: boolean; max?: number | null; min?: number | null},\n): number | null {\n const trimmed = input.trim();\n if (trimmed === '' || trimmed === '-') {\n return null;\n }\n const number = Number(trimmed);\n if (!Number.isFinite(number)) {\n return null;\n }\n if (options.isIntegerOnly && !Number.isInteger(number)) {\n return null;\n }\n if (options.min != null && number < options.min) {\n return null;\n }\n if (options.max != null && number > options.max) {\n return null;\n }\n return number;\n}\n\n/**\n * Numeric input field with optional min/max bounds and step control.\n */\nexport function NumberInput({\n label,\n value,\n onChange,\n size: sizeProp = 'md',\n description,\n endContent,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isIntegerOnly = false,\n isLoading = false,\n hasClear,\n hasAutoFocus = false,\n htmlName,\n autoComplete,\n min,\n max,\n step,\n units,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n placeholder,\n onFocus,\n onBlur,\n onEnter,\n onKeyDown,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: NumberInputProps): React.JSX.Element {\n const inputId = useId();\n const descriptionID =\n description != null ? `${inputId}-description` : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputGroup = useInputGroup();\n const effectiveDisabled = isDisabled || inputGroup?.isDisabled === true;\n const size = inputGroup?.size ?? sizeProp;\n const effectiveStatusType = status?.type ?? inputGroup?.statusType;\n const [pendingInput, setPendingInput] = useState<string | null>(null);\n const displayValue = useMemo(() => {\n if (pendingInput != null) {\n return pendingInput;\n }\n return value == null ? '' : String(value);\n }, [pendingInput, value]);\n const isInputValid =\n pendingInput == null ||\n pendingInput.trim() === '' ||\n parseNumberInput(pendingInput, {min, max, isIntegerOnly}) != null;\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const inputWrapper = (\n <div\n className={cx(\n inputRecipe({\n size,\n status: effectiveStatusType,\n isDisabled: effectiveDisabled,\n }),\n inputGroup != null ? className : undefined,\n )}\n style={inputGroup != null ? style : undefined}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || !isInputValid || undefined}\n aria-label={inputGroup != null ? label : undefined}\n aria-required={isRequired ?? undefined}\n autoComplete={autoComplete}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={inputStyles.control}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={effectiveDisabled}\n id={inputId}\n max={max ?? undefined}\n min={min ?? undefined}\n name={htmlName}\n onBlur={event => {\n if (pendingInput != null) {\n const parsed = parseNumberInput(pendingInput, {\n min,\n max,\n isIntegerOnly,\n });\n if (parsed != null && parsed !== value) {\n onChange(parsed);\n }\n setPendingInput(null);\n }\n onBlur?.(event);\n }}\n onChange={(event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = event.target.value;\n setPendingInput(nextValue);\n const parsed = parseNumberInput(nextValue, {\n min,\n max,\n isIntegerOnly,\n });\n if (parsed != null && parsed !== value) {\n onChange(parsed);\n }\n }}\n onFocus={onFocus}\n onKeyDown={event => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n onEnter?.();\n }\n onKeyDown?.(event);\n }}\n placeholder={placeholder}\n ref={ref}\n required={isRequired ?? undefined}\n step={step ?? undefined}\n type=\"number\"\n value={displayValue}\n />\n {units != null ? <span className={styles.units}>{units}</span> : null}\n {hasClear === true && value != null && !effectiveDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange(null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {endContent}\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n );\n\n if (inputGroup != null) {\n return inputWrapper;\n }\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputWrapper}\n </Field>\n );\n}\n\nNumberInput.displayName = 'NumberInput';\n"]}
1
+ {"version":3,"sources":["../src/components/NumberInput/NumberInput.tsx"],"names":[],"mappings":"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","file":"chunk-ISYUZ5FS.js","sourcesContent":["import {X} from 'lucide-react';\nimport {\n useId,\n useMemo,\n useState,\n type ChangeEvent,\n type CSSProperties,\n type FocusEvent,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n} from 'react';\nimport {css} from 'styled-system/css';\nimport {cx} from '../../internal/cx';\nimport {Button} from '../Button';\nimport {\n Field,\n getNecessity,\n type FieldNecessity,\n type InputSize,\n type InputStatus,\n} from '../Field';\nimport {inputRecipe, inputStyles} from '../Field/inputStyles';\nimport {\n getDescribedBy,\n getStatusIcon,\n getStatusMessageID,\n} from '../Field/inputUtils';\nimport {Icon, type IconComponent} from '../Icon';\nimport {useInputGroup} from '../InputGroup';\nimport {Spinner} from '../Spinner';\n\ntype NumberInputBaseProps = {\n /**\n * HTML autocomplete attribute value.\n */\n autoComplete?: string;\n /**\n * Additional CSS class names applied to the input wrapper.\n */\n className?: string;\n /**\n * Test ID applied to the input element.\n */\n 'data-testid'?: string;\n /**\n * Supporting text displayed below the label.\n */\n description?: ReactNode;\n /**\n * Content rendered after the input, before the status icon.\n */\n endContent?: ReactNode;\n /**\n * Whether to focus the input on mount.\n * @default false\n */\n hasAutoFocus?: boolean;\n /**\n * HTML name attribute.\n */\n htmlName?: string;\n /**\n * Whether the input is disabled.\n * @default false\n */\n isDisabled?: boolean;\n /**\n * Whether to restrict input to integer values only.\n * @default false\n */\n isIntegerOnly?: boolean;\n /**\n * Whether to visually hide the label.\n * @default false\n */\n isLabelHidden?: boolean;\n /**\n * Whether the input is in a loading state.\n * @default false\n */\n isLoading?: boolean;\n /**\n * Field label.\n */\n label: string;\n /**\n * Icon rendered beside the label.\n */\n labelIcon?: IconComponent;\n /**\n * Tooltip content shown next to the label.\n */\n labelTooltip?: ReactNode;\n /**\n * Maximum allowed value.\n */\n max?: number | null;\n /**\n * Minimum allowed value.\n */\n min?: number | null;\n /**\n * Called when the input loses focus.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Called when Enter is pressed.\n */\n onEnter?: () => void;\n /**\n * Called when the input receives focus.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n /**\n * Keyboard event handler for the input.\n */\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n /**\n * Placeholder text.\n */\n placeholder?: string;\n /**\n * Ref forwarded to the input element.\n */\n ref?: Ref<HTMLInputElement>;\n /**\n * Visual size.\n * @default 'md'\n */\n size?: InputSize;\n /**\n * Icon shown before the input.\n */\n startIcon?: IconComponent;\n /**\n * Validation status displayed below the input.\n */\n status?: InputStatus;\n /**\n * Step increment for the number input.\n */\n step?: number | null;\n /**\n * Inline styles applied to the input wrapper.\n */\n style?: CSSProperties;\n /**\n * Unit label displayed after the input value.\n */\n units?: string | null;\n /**\n * Controlled numeric value.\n */\n value: number | null;\n} & FieldNecessity;\n\ntype NumberInputNonClearableProps = NumberInputBaseProps & {\n /**\n * Whether to show a clear button.\n */\n hasClear?: false;\n /**\n * Called when the numeric value changes.\n */\n onChange: (value: number) => void;\n};\n\ntype NumberInputClearableProps = NumberInputBaseProps & {\n /**\n * Whether to show a clear button.\n */\n hasClear: true;\n /**\n * Called when the numeric value changes or is cleared.\n */\n onChange: (value: number | null) => void;\n};\n\nexport type NumberInputProps =\n | NumberInputClearableProps\n | NumberInputNonClearableProps;\n\nconst styles = {\n units: css({\n color: 'fg.muted',\n fontFamily: 'body',\n fontSize: 'sm',\n }),\n} as const;\n\nfunction parseNumberInput(\n input: string,\n options: {isIntegerOnly: boolean; max?: number | null; min?: number | null},\n): number | null {\n const trimmed = input.trim();\n if (trimmed === '' || trimmed === '-') {\n return null;\n }\n const number = Number(trimmed);\n if (!Number.isFinite(number)) {\n return null;\n }\n if (options.isIntegerOnly && !Number.isInteger(number)) {\n return null;\n }\n if (options.min != null && number < options.min) {\n return null;\n }\n if (options.max != null && number > options.max) {\n return null;\n }\n return number;\n}\n\n/**\n * Numeric input field with optional min/max bounds and step control.\n */\nexport function NumberInput({\n label,\n value,\n onChange,\n size: sizeProp = 'md',\n description,\n endContent,\n isLabelHidden = false,\n isOptional,\n isRequired,\n isDisabled = false,\n isIntegerOnly = false,\n isLoading = false,\n hasClear,\n hasAutoFocus = false,\n htmlName,\n autoComplete,\n min,\n max,\n step,\n units,\n status,\n labelIcon,\n labelTooltip,\n startIcon,\n placeholder,\n onFocus,\n onBlur,\n onEnter,\n onKeyDown,\n className,\n 'data-testid': dataTestId,\n style,\n ref,\n}: NumberInputProps): React.JSX.Element {\n const inputId = useId();\n const descriptionID =\n description != null ? `${inputId}-description` : undefined;\n const statusMessageID = getStatusMessageID(inputId, status);\n const describedBy = getDescribedBy(descriptionID, statusMessageID);\n const inputGroup = useInputGroup();\n const effectiveDisabled = isDisabled || inputGroup?.isDisabled === true;\n const size = inputGroup?.size ?? sizeProp;\n const effectiveStatusType = status?.type ?? inputGroup?.statusType;\n const [pendingInput, setPendingInput] = useState<string | null>(null);\n const displayValue = useMemo(() => {\n if (pendingInput != null) {\n return pendingInput;\n }\n return value == null ? '' : String(value);\n }, [pendingInput, value]);\n const isInputValid =\n pendingInput == null ||\n pendingInput.trim() === '' ||\n parseNumberInput(pendingInput, {min, max, isIntegerOnly}) != null;\n\n const necessity = getNecessity(isOptional, isRequired);\n\n const inputWrapper = (\n <div\n className={cx(\n inputRecipe({\n size,\n status: effectiveStatusType,\n isDisabled: effectiveDisabled,\n }),\n inputGroup != null ? className : undefined,\n )}\n style={inputGroup != null ? style : undefined}>\n {startIcon != null ? (\n <span className={inputStyles.iconSlot}>\n <Icon color=\"secondary\" icon={startIcon} size=\"sm\" />\n </span>\n ) : null}\n <input\n aria-busy={isLoading || undefined}\n aria-describedby={describedBy}\n aria-invalid={status?.type === 'error' || !isInputValid || undefined}\n aria-label={inputGroup != null ? label : undefined}\n aria-required={isRequired ?? undefined}\n autoComplete={autoComplete}\n // eslint-disable-next-line jsx-a11y-x/no-autofocus\n autoFocus={hasAutoFocus}\n className={inputStyles.control}\n data-autofocus={hasAutoFocus || undefined}\n data-testid={dataTestId}\n disabled={effectiveDisabled}\n id={inputId}\n max={max ?? undefined}\n min={min ?? undefined}\n name={htmlName}\n onBlur={event => {\n if (pendingInput != null) {\n const parsed = parseNumberInput(pendingInput, {\n min,\n max,\n isIntegerOnly,\n });\n if (parsed != null && parsed !== value) {\n onChange(parsed);\n }\n setPendingInput(null);\n }\n onBlur?.(event);\n }}\n onChange={(event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = event.target.value;\n setPendingInput(nextValue);\n const parsed = parseNumberInput(nextValue, {\n min,\n max,\n isIntegerOnly,\n });\n if (parsed != null && parsed !== value) {\n onChange(parsed);\n }\n }}\n onFocus={onFocus}\n onKeyDown={event => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n onEnter?.();\n }\n onKeyDown?.(event);\n }}\n placeholder={placeholder}\n ref={ref}\n required={isRequired ?? undefined}\n step={step ?? undefined}\n type=\"number\"\n value={displayValue}\n />\n {units != null ? <span className={styles.units}>{units}</span> : null}\n {hasClear === true && value != null && !effectiveDisabled ? (\n <Button\n icon={X}\n isIconOnly\n label={`Clear ${label}`}\n onClick={() => onChange(null)}\n size=\"sm\"\n variant=\"ghost\"\n />\n ) : null}\n {endContent}\n {isLoading ? <Spinner size=\"sm\" /> : null}\n {status != null ? (\n <span className={inputStyles.iconSlot}>\n {getStatusIcon(status.type)}\n </span>\n ) : null}\n </div>\n );\n\n if (inputGroup != null) {\n return inputWrapper;\n }\n\n return (\n <Field\n className={className}\n description={description}\n descriptionID={descriptionID}\n inputId={inputId}\n isDisabled={isDisabled}\n isLabelHidden={isLabelHidden}\n {...necessity}\n label={label}\n labelIcon={labelIcon}\n labelTooltip={labelTooltip}\n status={\n status == null ? undefined : {...status, messageID: statusMessageID}\n }\n style={style}>\n {inputWrapper}\n </Field>\n );\n}\n\nNumberInput.displayName = 'NumberInput';\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunk4YQTSHIB_cjs = require('./chunk-4YQTSHIB.cjs');
3
+ var chunkOJKZS6HG_cjs = require('./chunk-OJKZS6HG.cjs');
4
4
  var chunkCK3UJQRI_cjs = require('./chunk-CK3UJQRI.cjs');
5
5
  var chunkVXBVSYPA_cjs = require('./chunk-VXBVSYPA.cjs');
6
6
  var chunkKFEXS6OK_cjs = require('./chunk-KFEXS6OK.cjs');
7
7
  var chunk2P6D43V2_cjs = require('./chunk-2P6D43V2.cjs');
8
- var chunkBDBHHJGN_cjs = require('./chunk-BDBHHJGN.cjs');
9
- var chunkO3T7Z6RH_cjs = require('./chunk-O3T7Z6RH.cjs');
8
+ var chunkMAL4D4LR_cjs = require('./chunk-MAL4D4LR.cjs');
9
+ var chunkYBPG5RPR_cjs = require('./chunk-YBPG5RPR.cjs');
10
10
  var chunkYXYD5HKL_cjs = require('./chunk-YXYD5HKL.cjs');
11
11
  var chunkSPDVNY2Z_cjs = require('./chunk-SPDVNY2Z.cjs');
12
12
  var chunkRU6JG3FS_cjs = require('./chunk-RU6JG3FS.cjs');
@@ -83,10 +83,10 @@ function DateRangeInput({
83
83
  ),
84
84
  children: [
85
85
  /* @__PURE__ */ jsxRuntime.jsx(
86
- chunkBDBHHJGN_cjs.Popover,
86
+ chunkMAL4D4LR_cjs.Popover,
87
87
  {
88
88
  content: /* @__PURE__ */ jsxRuntime.jsx(
89
- chunk4YQTSHIB_cjs.Calendar,
89
+ chunkOJKZS6HG_cjs.Calendar,
90
90
  {
91
91
  getIsDateDisabled,
92
92
  max,
@@ -108,7 +108,7 @@ function DateRangeInput({
108
108
  onOpenChange: setIsOpen,
109
109
  padding: 3,
110
110
  children: /* @__PURE__ */ jsxRuntime.jsx(
111
- chunkO3T7Z6RH_cjs.Button,
111
+ chunkYBPG5RPR_cjs.Button,
112
112
  {
113
113
  icon: lucideReact.CalendarIcon,
114
114
  isDisabled,
@@ -139,7 +139,7 @@ function DateRangeInput({
139
139
  }
140
140
  ),
141
141
  hasClear && value != null && !isDisabled ? /* @__PURE__ */ jsxRuntime.jsx(
142
- chunkO3T7Z6RH_cjs.Button,
142
+ chunkYBPG5RPR_cjs.Button,
143
143
  {
144
144
  icon: lucideReact.X,
145
145
  isIconOnly: true,
@@ -160,5 +160,5 @@ function DateRangeInput({
160
160
  DateRangeInput.displayName = "DateRangeInput";
161
161
 
162
162
  exports.DateRangeInput = DateRangeInput;
163
- //# sourceMappingURL=chunk-VQ7IRFRR.cjs.map
164
- //# sourceMappingURL=chunk-VQ7IRFRR.cjs.map
163
+ //# sourceMappingURL=chunk-ITDQSF2O.cjs.map
164
+ //# sourceMappingURL=chunk-ITDQSF2O.cjs.map