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
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunkXHTKGOQV_cjs = require('./chunk-XHTKGOQV.cjs');
4
- var chunkDH2ZFYKE_cjs = require('./chunk-DH2ZFYKE.cjs');
5
- var chunkMNVBSOAQ_cjs = require('./chunk-MNVBSOAQ.cjs');
6
- var chunkUUIAGGFW_cjs = require('./chunk-UUIAGGFW.cjs');
7
- var chunkJMLJLDHO_cjs = require('./chunk-JMLJLDHO.cjs');
8
- var chunk36QGPGT2_cjs = require('./chunk-36QGPGT2.cjs');
3
+ var chunkY5SXQR52_cjs = require('./chunk-Y5SXQR52.cjs');
4
+ var chunk2TGDDZG6_cjs = require('./chunk-2TGDDZG6.cjs');
5
+ var chunkZXPKFGRB_cjs = require('./chunk-ZXPKFGRB.cjs');
6
+ var chunkZTQQ2O6O_cjs = require('./chunk-ZTQQ2O6O.cjs');
7
+ var chunkUYXQBM2B_cjs = require('./chunk-UYXQBM2B.cjs');
8
+ var chunkJAHKLROD_cjs = require('./chunk-JAHKLROD.cjs');
9
9
  var chunkP4TOIB2A_cjs = require('./chunk-P4TOIB2A.cjs');
10
10
  var chunkTO3ZPSYO_cjs = require('./chunk-TO3ZPSYO.cjs');
11
- var chunkZ7ID5TC7_cjs = require('./chunk-Z7ID5TC7.cjs');
12
- var chunkGGZGVAEF_cjs = require('./chunk-GGZGVAEF.cjs');
11
+ var chunk2D6SGEPH_cjs = require('./chunk-2D6SGEPH.cjs');
12
+ var chunkUR7RYJOU_cjs = require('./chunk-UR7RYJOU.cjs');
13
13
  var chunkCK3UJQRI_cjs = require('./chunk-CK3UJQRI.cjs');
14
- var chunk2VIJC4NW_cjs = require('./chunk-2VIJC4NW.cjs');
15
- var chunkBDBHHJGN_cjs = require('./chunk-BDBHHJGN.cjs');
14
+ var chunkPTJ5YZFY_cjs = require('./chunk-PTJ5YZFY.cjs');
15
+ var chunkMAL4D4LR_cjs = require('./chunk-MAL4D4LR.cjs');
16
16
  var chunkR37R7DEV_cjs = require('./chunk-R37R7DEV.cjs');
17
- var chunkO3T7Z6RH_cjs = require('./chunk-O3T7Z6RH.cjs');
17
+ var chunkYBPG5RPR_cjs = require('./chunk-YBPG5RPR.cjs');
18
18
  var chunkJMNH45Q3_cjs = require('./chunk-JMNH45Q3.cjs');
19
19
  var chunk6SHL7FYO_cjs = require('./chunk-6SHL7FYO.cjs');
20
20
  var chunk4TIAKZ4Q_cjs = require('./chunk-4TIAKZ4Q.cjs');
@@ -1392,7 +1392,7 @@ function TextFilterControl({
1392
1392
  const store = useFilterStore();
1393
1393
  const value = store.getConfig().filters[columnKey];
1394
1394
  return /* @__PURE__ */ jsxRuntime.jsx(
1395
- chunk36QGPGT2_cjs.TextInput,
1395
+ chunkJAHKLROD_cjs.TextInput,
1396
1396
  {
1397
1397
  hasClear,
1398
1398
  isLabelHidden: true,
@@ -1428,7 +1428,7 @@ function NumberFilterControl({
1428
1428
  };
1429
1429
  if (hasClear === false) {
1430
1430
  return /* @__PURE__ */ jsxRuntime.jsx(
1431
- chunkUUIAGGFW_cjs.NumberInput,
1431
+ chunkZTQQ2O6O_cjs.NumberInput,
1432
1432
  {
1433
1433
  ...sharedProps,
1434
1434
  onChange: (nextValue) => {
@@ -1438,7 +1438,7 @@ function NumberFilterControl({
1438
1438
  );
1439
1439
  }
1440
1440
  return /* @__PURE__ */ jsxRuntime.jsx(
1441
- chunkUUIAGGFW_cjs.NumberInput,
1441
+ chunkZTQQ2O6O_cjs.NumberInput,
1442
1442
  {
1443
1443
  ...sharedProps,
1444
1444
  hasClear: true,
@@ -1458,7 +1458,7 @@ function SelectFilterControl({
1458
1458
  const store = useFilterStore();
1459
1459
  const value = store.getConfig().filters[columnKey];
1460
1460
  return /* @__PURE__ */ jsxRuntime.jsx(
1461
- chunkDH2ZFYKE_cjs.Select,
1461
+ chunk2TGDDZG6_cjs.Select,
1462
1462
  {
1463
1463
  hasClear,
1464
1464
  isLabelHidden: true,
@@ -1487,7 +1487,7 @@ function MultiSelectFilterControl({
1487
1487
  const store = useFilterStore();
1488
1488
  const value = store.getConfig().filters[columnKey];
1489
1489
  return /* @__PURE__ */ jsxRuntime.jsx(
1490
- chunkMNVBSOAQ_cjs.MultiSelect,
1490
+ chunkZXPKFGRB_cjs.MultiSelect,
1491
1491
  {
1492
1492
  hasClear,
1493
1493
  hasSearch: false,
@@ -1517,7 +1517,7 @@ function DateFilterControl({
1517
1517
  const store = useFilterStore();
1518
1518
  const value = store.getConfig().filters[columnKey];
1519
1519
  return /* @__PURE__ */ jsxRuntime.jsx(
1520
- chunkGGZGVAEF_cjs.DateInput,
1520
+ chunkUR7RYJOU_cjs.DateInput,
1521
1521
  {
1522
1522
  hasClear,
1523
1523
  isLabelHidden: true,
@@ -1540,7 +1540,7 @@ function TimeFilterControl({
1540
1540
  const store = useFilterStore();
1541
1541
  const value = store.getConfig().filters[columnKey];
1542
1542
  return /* @__PURE__ */ jsxRuntime.jsx(
1543
- chunkZ7ID5TC7_cjs.TimeInput,
1543
+ chunk2D6SGEPH_cjs.TimeInput,
1544
1544
  {
1545
1545
  hasClear,
1546
1546
  isLabelHidden: true,
@@ -1564,9 +1564,9 @@ function ListFilterControl({
1564
1564
  const store = useFilterStore();
1565
1565
  const value = store.getConfig().filters[columnKey];
1566
1566
  const items = Array.isArray(value) ? value.map((id) => ({ id, label: id })) : [];
1567
- const source = operatorValue.searchSource ?? chunk2VIJC4NW_cjs.createStaticSource(items, { keywords: (item) => [item.id] });
1567
+ const source = operatorValue.searchSource ?? chunkPTJ5YZFY_cjs.createStaticSource(items, { keywords: (item) => [item.id] });
1568
1568
  return /* @__PURE__ */ jsxRuntime.jsx(
1569
- chunkXHTKGOQV_cjs.TagsInput,
1569
+ chunkY5SXQR52_cjs.TagsInput,
1570
1570
  {
1571
1571
  hasClear,
1572
1572
  hasCreate: operatorValue.isArbitraryStringAllowed ?? true,
@@ -1725,7 +1725,7 @@ function PopoverFilterTrigger({
1725
1725
  [column.key, draft, store]
1726
1726
  );
1727
1727
  return /* @__PURE__ */ jsxRuntime.jsx(
1728
- chunkBDBHHJGN_cjs.Popover,
1728
+ chunkMAL4D4LR_cjs.Popover,
1729
1729
  {
1730
1730
  content: /* @__PURE__ */ jsxRuntime.jsx(FilterStoreContext, { value: draftStore, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles7.popoverContent, children: [
1731
1731
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1739,7 +1739,7 @@ function PopoverFilterTrigger({
1739
1739
  ),
1740
1740
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles7.popoverActions, children: [
1741
1741
  /* @__PURE__ */ jsxRuntime.jsx(
1742
- chunkO3T7Z6RH_cjs.Button,
1742
+ chunkYBPG5RPR_cjs.Button,
1743
1743
  {
1744
1744
  label: "Reset",
1745
1745
  onClick: handleReset,
@@ -1749,7 +1749,7 @@ function PopoverFilterTrigger({
1749
1749
  ),
1750
1750
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles7.popoverActionsSpacer }),
1751
1751
  /* @__PURE__ */ jsxRuntime.jsx(
1752
- chunkO3T7Z6RH_cjs.Button,
1752
+ chunkYBPG5RPR_cjs.Button,
1753
1753
  {
1754
1754
  label: "Apply",
1755
1755
  onClick: handleApply,
@@ -1765,7 +1765,7 @@ function PopoverFilterTrigger({
1765
1765
  padding: 3,
1766
1766
  placement: "below",
1767
1767
  children: /* @__PURE__ */ jsxRuntime.jsx(
1768
- chunkO3T7Z6RH_cjs.Button,
1768
+ chunkYBPG5RPR_cjs.Button,
1769
1769
  {
1770
1770
  icon: lucideReact.Filter,
1771
1771
  isIconOnly: true,
@@ -1937,13 +1937,13 @@ function useTablePagination({
1937
1937
  "div",
1938
1938
  {
1939
1939
  className: `${styles8.root} ${styles8.align[current.align]} ${side === "above" ? styles8.above : styles8.below}`,
1940
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkJMLJLDHO_cjs.Pagination, { ...current.paginationProps })
1940
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkUYXQBM2B_cjs.Pagination, { ...current.paginationProps })
1941
1941
  }
1942
1942
  );
1943
1943
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1944
- (current.position === "above" || current.position === "both") && makePagination("above"),
1944
+ current.position === "above" || current.position === "both" ? makePagination("above") : null,
1945
1945
  children,
1946
- (current.position === "below" || current.position === "both") && makePagination("below")
1946
+ current.position === "below" || current.position === "both" ? makePagination("below") : null
1947
1947
  ] });
1948
1948
  }
1949
1949
  }),
@@ -2499,5 +2499,5 @@ exports.useTableSelection = useTableSelection;
2499
2499
  exports.useTableSelectionState = useTableSelectionState;
2500
2500
  exports.useTableSortable = useTableSortable;
2501
2501
  exports.useTableSortableState = useTableSortableState;
2502
- //# sourceMappingURL=chunk-U5ZCQI5O.cjs.map
2503
- //# sourceMappingURL=chunk-U5ZCQI5O.cjs.map
2502
+ //# sourceMappingURL=chunk-ACQMLJ4I.cjs.map
2503
+ //# sourceMappingURL=chunk-ACQMLJ4I.cjs.map
@@ -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","createContext","use","css","cx","styles","Temporal","Text","Fragment","memo","useRef","jsxs","EmptyState","useMemo","useCallback","useEffect","plainDateToUnixSeconds","getBrowserTimezoneID","TextInput","NumberInput","Select","MultiSelect","DateInput","TimeInput","createStaticSource","TagsInput","useState","Popover","Button","Filter","Pagination","useSyncExternalStore","CheckboxInput","mergeRefs","entry","ArrowUp","ArrowDown","ChevronsUpDown","nextDirection","Icon"],"mappings":"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","file":"chunk-ACQMLJ4I.cjs","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"]}
@@ -1,6 +1,6 @@
1
1
  import { Dialog } from './chunk-P3SMNZCT.js';
2
- import { Layout, LayoutHeader, LayoutFooter, LayoutContent } from './chunk-PTZAJW3J.js';
3
- import { Button } from './chunk-RRNT32KY.js';
2
+ import { Layout, LayoutHeader, LayoutFooter, LayoutContent } from './chunk-GI5MVVIX.js';
3
+ import { Button } from './chunk-HLN3JQYD.js';
4
4
  import { Text } from './chunk-J2FCNWYM.js';
5
5
  import { useRef, useEffect, useCallback, useState } from 'react';
6
6
  import { jsx } from 'react/jsx-runtime';
@@ -101,5 +101,5 @@ function useAlertDialog() {
101
101
  }
102
102
 
103
103
  export { AlertDialog, useAlertDialog };
104
- //# sourceMappingURL=chunk-SA3LUT6E.js.map
105
- //# sourceMappingURL=chunk-SA3LUT6E.js.map
104
+ //# sourceMappingURL=chunk-AGJ5SZCM.js.map
105
+ //# sourceMappingURL=chunk-AGJ5SZCM.js.map