@logicplanes/kaeso-ui 0.4.0 → 0.4.2

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 (309) hide show
  1. package/ai/component-guides.md +51 -1
  2. package/ai/component-registry.json +113 -17
  3. package/ai/component-registry.md +38 -12
  4. package/ai/icons.md +1 -1
  5. package/ai/tokens.md +2 -1
  6. package/dist/blocks/delete-resource.js +1 -1
  7. package/dist/blocks/pages.js +5 -5
  8. package/dist/blocks/resource-list.js +4 -4
  9. package/dist/chunks/{app-frame-Cj_gCbmu.js → app-frame-C8csevkL.js} +9 -9
  10. package/dist/chunks/{app-frame-Cj_gCbmu.js.map → app-frame-C8csevkL.js.map} +1 -1
  11. package/dist/chunks/{avatar-DOzOhYJr.js → avatar-CWbdwbJv.js} +2 -2
  12. package/dist/chunks/{avatar-DOzOhYJr.js.map → avatar-CWbdwbJv.js.map} +1 -1
  13. package/dist/chunks/{badge-wUHlj7m3.js → badge-C2KtxCLB.js} +2 -2
  14. package/dist/chunks/{badge-wUHlj7m3.js.map → badge-C2KtxCLB.js.map} +1 -1
  15. package/dist/chunks/{banner-DY1jSc9Y.js → banner-Cb8OWnqJ.js} +4 -4
  16. package/dist/chunks/{banner-DY1jSc9Y.js.map → banner-Cb8OWnqJ.js.map} +1 -1
  17. package/dist/chunks/{button-h2IFCER2.js → button-Dzu7_csE.js} +13 -13
  18. package/dist/chunks/button-Dzu7_csE.js.map +1 -0
  19. package/dist/chunks/{calendar-cVuezHQ6.js → calendar--YemJsv4.js} +2 -2
  20. package/dist/chunks/{calendar-cVuezHQ6.js.map → calendar--YemJsv4.js.map} +1 -1
  21. package/dist/chunks/{checkbox-C5yvSS7O.js → checkbox-CDfC6E-M.js} +2 -2
  22. package/dist/chunks/{checkbox-C5yvSS7O.js.map → checkbox-CDfC6E-M.js.map} +1 -1
  23. package/dist/chunks/{cn-DUDmdLpZ.js → cn-Dj6sRgkF.js} +17 -3
  24. package/dist/chunks/cn-Dj6sRgkF.js.map +1 -0
  25. package/dist/chunks/code-block-U5fCqwgC.js +330 -0
  26. package/dist/chunks/code-block-U5fCqwgC.js.map +1 -0
  27. package/dist/chunks/{code-C49NzHUQ.js → code-tqj0uhBL.js} +2 -2
  28. package/dist/chunks/{code-C49NzHUQ.js.map → code-tqj0uhBL.js.map} +1 -1
  29. package/dist/chunks/{collapsible-CDQq1Y9x.js → collapsible-CKrCX_T9.js} +13 -13
  30. package/dist/chunks/collapsible-CKrCX_T9.js.map +1 -0
  31. package/dist/chunks/{combobox-B9ttar4C.js → combobox-BARyrpXH.js} +6 -6
  32. package/dist/chunks/{combobox-B9ttar4C.js.map → combobox-BARyrpXH.js.map} +1 -1
  33. package/dist/chunks/{command-list-DZMVrXWD.js → command-list-0RR4DpUe.js} +138 -137
  34. package/dist/chunks/command-list-0RR4DpUe.js.map +1 -0
  35. package/dist/chunks/copy-button-7-irieJw.js +142 -0
  36. package/dist/chunks/copy-button-7-irieJw.js.map +1 -0
  37. package/dist/chunks/{core-Bu6iq5uh.js → core-Bl9NrBLS.js} +10 -10
  38. package/dist/chunks/core-Bl9NrBLS.js.map +1 -0
  39. package/dist/chunks/{date-popup-BJPA_fBm.js → date-popup-RQkqhko4.js} +4 -4
  40. package/dist/chunks/{date-popup-BJPA_fBm.js.map → date-popup-RQkqhko4.js.map} +1 -1
  41. package/dist/chunks/{dialog-BLcP7v24.js → dialog-DQ9vZ7vr.js} +5 -5
  42. package/dist/chunks/{dialog-BLcP7v24.js.map → dialog-DQ9vZ7vr.js.map} +1 -1
  43. package/dist/chunks/{empty-YXmSkKzR.js → empty-DvhyMXQq.js} +2 -2
  44. package/dist/chunks/{empty-YXmSkKzR.js.map → empty-DvhyMXQq.js.map} +1 -1
  45. package/dist/chunks/{field-BZriODU7.js → field-TviMvYa2.js} +2 -2
  46. package/dist/chunks/{field-BZriODU7.js.map → field-TviMvYa2.js.map} +1 -1
  47. package/dist/chunks/{icon-BqujXDUc.js → icon-D7ja-_Yk.js} +2 -2
  48. package/dist/chunks/{icon-BqujXDUc.js.map → icon-D7ja-_Yk.js.map} +1 -1
  49. package/dist/chunks/{icon-button-DmKFxQbP.js → icon-button-CPYR21Sz.js} +3 -3
  50. package/dist/chunks/{icon-button-DmKFxQbP.js.map → icon-button-CPYR21Sz.js.map} +1 -1
  51. package/dist/chunks/{identity-Chj7fW89.js → identity-DPuTkMsa.js} +6 -6
  52. package/dist/chunks/{identity-Chj7fW89.js.map → identity-DPuTkMsa.js.map} +1 -1
  53. package/dist/chunks/{input-9y3afoiq.js → input-TyLIaQ5k.js} +5 -5
  54. package/dist/chunks/{input-9y3afoiq.js.map → input-TyLIaQ5k.js.map} +1 -1
  55. package/dist/chunks/{input-group-BoxjnN8I.js → input-group-CUSNsQjQ.js} +4 -4
  56. package/dist/chunks/{input-group-BoxjnN8I.js.map → input-group-CUSNsQjQ.js.map} +1 -1
  57. package/dist/chunks/{iso-field-DAa6iPWn.js → iso-field-CWbxlll-.js} +2 -2
  58. package/dist/chunks/{iso-field-DAa6iPWn.js.map → iso-field-CWbxlll-.js.map} +1 -1
  59. package/dist/chunks/{json-view-BkG2hTXV.js → json-view-Dqd2TDkc.js} +3 -3
  60. package/dist/chunks/{json-view-BkG2hTXV.js.map → json-view-Dqd2TDkc.js.map} +1 -1
  61. package/dist/chunks/{kbd-DqWmbr_e.js → kbd-BF1vKXJf.js} +2 -2
  62. package/dist/chunks/{kbd-DqWmbr_e.js.map → kbd-BF1vKXJf.js.map} +1 -1
  63. package/dist/chunks/{link-YMcxM-BZ.js → link-B2I55xg9.js} +3 -3
  64. package/dist/chunks/{link-YMcxM-BZ.js.map → link-B2I55xg9.js.map} +1 -1
  65. package/dist/chunks/{list-7VARol_x.js → list-CkOozrVY.js} +8 -8
  66. package/dist/chunks/{list-7VARol_x.js.map → list-CkOozrVY.js.map} +1 -1
  67. package/dist/chunks/{loader-ENBh2Fbt.js → loader-DCfPndXa.js} +2 -2
  68. package/dist/chunks/{loader-ENBh2Fbt.js.map → loader-DCfPndXa.js.map} +1 -1
  69. package/dist/chunks/{markdown-DBVNULWg.js → markdown-BEgwZFlu.js} +9 -9
  70. package/dist/chunks/{markdown-DBVNULWg.js.map → markdown-BEgwZFlu.js.map} +1 -1
  71. package/dist/chunks/{menu-Bnfi9P3t.js → menu-fl_QQb38.js} +4 -4
  72. package/dist/chunks/{menu-Bnfi9P3t.js.map → menu-fl_QQb38.js.map} +1 -1
  73. package/dist/chunks/{meter-DhTnem4k.js → meter-Bj4N3Xuh.js} +2 -2
  74. package/dist/chunks/{meter-DhTnem4k.js.map → meter-Bj4N3Xuh.js.map} +1 -1
  75. package/dist/chunks/{nav-sheet-D7wIF_OU.js → nav-sheet-B2rNb8GB.js} +2 -2
  76. package/dist/chunks/{nav-sheet-D7wIF_OU.js.map → nav-sheet-B2rNb8GB.js.map} +1 -1
  77. package/dist/chunks/{nav-wordmark-DmbT1Aiw.js → nav-wordmark-_pjheAsZ.js} +2 -2
  78. package/dist/chunks/{nav-wordmark-DmbT1Aiw.js.map → nav-wordmark-_pjheAsZ.js.map} +1 -1
  79. package/dist/chunks/{page-header-B3tV8Wog.js → page-header-DjUMDG69.js} +4 -4
  80. package/dist/chunks/{page-header-B3tV8Wog.js.map → page-header-DjUMDG69.js.map} +1 -1
  81. package/dist/chunks/{pagination-CLfsofo3.js → pagination-BaY8jdli.js} +4 -4
  82. package/dist/chunks/{pagination-CLfsofo3.js.map → pagination-BaY8jdli.js.map} +1 -1
  83. package/dist/chunks/{picker-popover-B5YdOxNm.js → picker-popover-DShea4b8.js} +7 -7
  84. package/dist/chunks/{picker-popover-B5YdOxNm.js.map → picker-popover-DShea4b8.js.map} +1 -1
  85. package/dist/chunks/{popover-bjxg020P.js → popover-CFMwaeIP.js} +2 -2
  86. package/dist/chunks/{popover-bjxg020P.js.map → popover-CFMwaeIP.js.map} +1 -1
  87. package/dist/chunks/{radio-DwYcXAzv.js → radio-Yl0nO-Sj.js} +2 -2
  88. package/dist/chunks/{radio-DwYcXAzv.js.map → radio-Yl0nO-Sj.js.map} +1 -1
  89. package/dist/chunks/{range-popup-ZunS8QSH.js → range-popup-CkhsK3wI.js} +6 -6
  90. package/dist/chunks/{range-popup-ZunS8QSH.js.map → range-popup-CkhsK3wI.js.map} +1 -1
  91. package/dist/chunks/{release-art-Ogl-L1Vh.js → release-art-ZwfFQImt.js} +2 -2
  92. package/dist/chunks/{release-art-Ogl-L1Vh.js.map → release-art-ZwfFQImt.js.map} +1 -1
  93. package/dist/chunks/{rights-CiIBzT9o.js → rights-BlQx9C_j.js} +9 -9
  94. package/dist/chunks/{rights-CiIBzT9o.js.map → rights-BlQx9C_j.js.map} +1 -1
  95. package/dist/chunks/scroll-area-D8MD7Vpo.js +42 -0
  96. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +1 -0
  97. package/dist/chunks/{section-BsET7Fo-.js → section-Ce1efbsP.js} +3 -3
  98. package/dist/chunks/{section-BsET7Fo-.js.map → section-Ce1efbsP.js.map} +1 -1
  99. package/dist/chunks/{segmented-DxjnIuww.js → segmented-C97zvDR1.js} +4 -4
  100. package/dist/chunks/{segmented-DxjnIuww.js.map → segmented-C97zvDR1.js.map} +1 -1
  101. package/dist/chunks/{select-Bbv2f5F8.js → select-x4XVsdCI.js} +14 -14
  102. package/dist/chunks/select-x4XVsdCI.js.map +1 -0
  103. package/dist/chunks/{separator-CpAUELNs.js → separator-D7TzNHmX.js} +2 -2
  104. package/dist/chunks/{separator-CpAUELNs.js.map → separator-D7TzNHmX.js.map} +1 -1
  105. package/dist/chunks/{sidebar-ZSTPK9Jn.js → sidebar-DtFlejU7.js} +7 -7
  106. package/dist/chunks/{sidebar-ZSTPK9Jn.js.map → sidebar-DtFlejU7.js.map} +1 -1
  107. package/dist/chunks/{sidebar-menu-ct8IiL4z.js → sidebar-menu-CxQbGwyj.js} +2 -2
  108. package/dist/chunks/{sidebar-menu-ct8IiL4z.js.map → sidebar-menu-CxQbGwyj.js.map} +1 -1
  109. package/dist/chunks/{skeleton-BM797MAg.js → skeleton-Dcz57Zyp.js} +2 -2
  110. package/dist/chunks/{skeleton-BM797MAg.js.map → skeleton-Dcz57Zyp.js.map} +1 -1
  111. package/dist/chunks/{slider-Ds-tqY-1.js → slider-Ci83PGtj.js} +2 -2
  112. package/dist/chunks/{slider-Ds-tqY-1.js.map → slider-Ci83PGtj.js.map} +1 -1
  113. package/dist/chunks/{status-dot-BqVOlShY.js → status-dot-QJTF0Yv4.js} +3 -3
  114. package/dist/chunks/{status-dot-BqVOlShY.js.map → status-dot-QJTF0Yv4.js.map} +1 -1
  115. package/dist/chunks/{swap-text-Cica0pUr.js → swap-text-Dr0Irxz6.js} +2 -2
  116. package/dist/chunks/{swap-text-Cica0pUr.js.map → swap-text-Dr0Irxz6.js.map} +1 -1
  117. package/dist/chunks/{switch-Cq1OfeBr.js → switch-b-VkStWj.js} +5 -5
  118. package/dist/chunks/switch-b-VkStWj.js.map +1 -0
  119. package/dist/chunks/table-BeOSKl_3.js +84 -0
  120. package/dist/chunks/table-BeOSKl_3.js.map +1 -0
  121. package/dist/chunks/{tag-XgPXKoxi.js → tag-DNdX1XRR.js} +4 -4
  122. package/dist/chunks/{tag-XgPXKoxi.js.map → tag-DNdX1XRR.js.map} +1 -1
  123. package/dist/chunks/{text-IoDy3Vxi.js → text-DCGGNqTM.js} +3 -3
  124. package/dist/chunks/{text-IoDy3Vxi.js.map → text-DCGGNqTM.js.map} +1 -1
  125. package/dist/chunks/{textarea-jOiTkfMf.js → textarea-CT2S2JVM.js} +5 -5
  126. package/dist/chunks/{textarea-jOiTkfMf.js.map → textarea-CT2S2JVM.js.map} +1 -1
  127. package/dist/chunks/{timeseries-BBWsSM4Q.js → timeseries-B-8OfeZm.js} +3 -3
  128. package/dist/chunks/{timeseries-BBWsSM4Q.js.map → timeseries-B-8OfeZm.js.map} +1 -1
  129. package/dist/chunks/{toolbar-nVLFWH2i.js → toolbar-DL6zVrzU.js} +2 -2
  130. package/dist/chunks/{toolbar-nVLFWH2i.js.map → toolbar-DL6zVrzU.js.map} +1 -1
  131. package/dist/chunks/{tooltip-CTBnfiDH.js → tooltip-BMQ9BtPp.js} +4 -4
  132. package/dist/chunks/{tooltip-CTBnfiDH.js.map → tooltip-BMQ9BtPp.js.map} +1 -1
  133. package/dist/chunks/{tooltip-root-B0zWodAJ.js → tooltip-root-BeAMXzxU.js} +4 -4
  134. package/dist/chunks/{tooltip-root-B0zWodAJ.js.map → tooltip-root-BeAMXzxU.js.map} +1 -1
  135. package/dist/components/app-frame.js +2 -2
  136. package/dist/components/avatar.js +1 -1
  137. package/dist/components/badge.js +1 -1
  138. package/dist/components/banner.js +1 -1
  139. package/dist/components/button-group.js +4 -4
  140. package/dist/components/button.js +1 -1
  141. package/dist/components/calendar.js +1 -1
  142. package/dist/components/charts/bar.js +2 -2
  143. package/dist/components/charts/donut.js +2 -2
  144. package/dist/components/charts/gauge.js +2 -2
  145. package/dist/components/charts/heatmap.js +1 -1
  146. package/dist/components/charts/sankey.js +2 -2
  147. package/dist/components/charts/sparkline.js +1 -1
  148. package/dist/components/charts/timeseries.js +1 -1
  149. package/dist/components/charts.js +2 -2
  150. package/dist/components/checkbox.js +1 -1
  151. package/dist/components/code-block.js +2 -2
  152. package/dist/components/code.js +1 -1
  153. package/dist/components/collapsible.js +1 -1
  154. package/dist/components/combobox.js +1 -1
  155. package/dist/components/command-list.js +2 -2
  156. package/dist/components/command-palette.js +32 -31
  157. package/dist/components/command-palette.js.map +1 -1
  158. package/dist/components/copy-button.js +1 -1
  159. package/dist/components/data-table.js +14 -14
  160. package/dist/components/data-table.js.map +1 -1
  161. package/dist/components/date-picker.js +7 -7
  162. package/dist/components/date-picker.js.map +1 -1
  163. package/dist/components/dialog.js +2 -2
  164. package/dist/components/display-options.js +8 -8
  165. package/dist/components/empty.js +1 -1
  166. package/dist/components/field.js +1 -1
  167. package/dist/components/figure.js +60 -0
  168. package/dist/components/figure.js.map +1 -0
  169. package/dist/components/filter-chip.js +5 -5
  170. package/dist/components/filter-row.js +1 -1
  171. package/dist/components/flow.js +2 -2
  172. package/dist/components/heading.js +1 -1
  173. package/dist/components/icon-button.js +1 -1
  174. package/dist/components/icon.js +1 -1
  175. package/dist/components/input.js +7 -7
  176. package/dist/components/kaeso/conversation.js +8 -8
  177. package/dist/components/kaeso/identity.js +1 -1
  178. package/dist/components/kaeso/moments.js +5 -5
  179. package/dist/components/kaeso/rights.js +1 -1
  180. package/dist/components/kaeso/usage.js +5 -5
  181. package/dist/components/kaeso.js +10 -10
  182. package/dist/components/kbd.js +1 -1
  183. package/dist/components/key-value.js +3 -3
  184. package/dist/components/label.js +1 -1
  185. package/dist/components/layout.js +1 -1
  186. package/dist/components/link.js +1 -1
  187. package/dist/components/list.js +1 -1
  188. package/dist/components/loader.js +2 -2
  189. package/dist/components/logo.js +2 -2
  190. package/dist/components/markdown.js +1 -1
  191. package/dist/components/menu.js +1 -1
  192. package/dist/components/meter.js +1 -1
  193. package/dist/components/page-header.js +1 -1
  194. package/dist/components/pagination.js +1 -1
  195. package/dist/components/playground.js +16 -16
  196. package/dist/components/popover.js +2 -2
  197. package/dist/components/qr-code.js +2 -2
  198. package/dist/components/qr-code.js.map +1 -1
  199. package/dist/components/radio.js +1 -1
  200. package/dist/components/release-art.js +1 -1
  201. package/dist/components/scroll-area.js +1 -41
  202. package/dist/components/section.js +1 -1
  203. package/dist/components/segmented.js +1 -1
  204. package/dist/components/select.js +1 -1
  205. package/dist/components/separator.js +1 -1
  206. package/dist/components/settings.js +5 -4
  207. package/dist/components/settings.js.map +1 -1
  208. package/dist/components/sheet.js +4 -4
  209. package/dist/components/sheet.js.map +1 -1
  210. package/dist/components/sidebar.js +1 -1
  211. package/dist/components/skeleton.js +1 -1
  212. package/dist/components/slider.js +1 -1
  213. package/dist/components/stat.js +3 -3
  214. package/dist/components/status-dot.js +1 -1
  215. package/dist/components/surface.js +1 -1
  216. package/dist/components/swap-text.js +1 -1
  217. package/dist/components/switch.js +1 -1
  218. package/dist/components/table.js +1 -1
  219. package/dist/components/tabs.js +2 -2
  220. package/dist/components/tag.js +1 -1
  221. package/dist/components/text.js +1 -1
  222. package/dist/components/theme-image.js +1 -1
  223. package/dist/components/theme-menu.js +2 -2
  224. package/dist/components/theme-select.js +1 -1
  225. package/dist/components/timeline.js +1 -1
  226. package/dist/components/toast.js +4 -4
  227. package/dist/components/toc.js +37 -22
  228. package/dist/components/toc.js.map +1 -1
  229. package/dist/components/toolbar.js +1 -1
  230. package/dist/components/tooltip.js +1 -1
  231. package/dist/components/visually-hidden.js +1 -1
  232. package/dist/index.js +88 -86
  233. package/dist/kaeso.css +45 -0
  234. package/dist/styles.css +1 -1
  235. package/dist/types/blocks/delete-resource/delete-resource.d.ts +1 -1
  236. package/dist/types/blocks/pages/pages.d.ts +3 -3
  237. package/dist/types/blocks/resource-list/resource-list.d.ts +1 -1
  238. package/dist/types/components/app-frame/app-frame.d.ts +1 -1
  239. package/dist/types/components/app-frame/nav-sheet.d.ts +1 -1
  240. package/dist/types/components/button/button.d.ts +6 -6
  241. package/dist/types/components/calendar/calendar.d.ts +1 -1
  242. package/dist/types/components/charts/core.d.ts +5 -5
  243. package/dist/types/components/code-block/code-block.d.ts +1 -1
  244. package/dist/types/components/code-block/indent.d.ts +3 -0
  245. package/dist/types/components/combobox/combobox.d.ts +1 -1
  246. package/dist/types/components/command-list/command-list.d.ts +1 -0
  247. package/dist/types/components/command-list/docs.d.ts +1 -0
  248. package/dist/types/components/command-list/picker-popover.d.ts +1 -1
  249. package/dist/types/components/command-palette/command-palette.d.ts +2 -1
  250. package/dist/types/components/command-palette/docs.d.ts +1 -0
  251. package/dist/types/components/data-table/data-table.d.ts +1 -1
  252. package/dist/types/components/date-picker/date-popup.d.ts +1 -1
  253. package/dist/types/components/date-picker/iso-field.d.ts +1 -1
  254. package/dist/types/components/date-picker/range-popup.d.ts +1 -1
  255. package/dist/types/components/dialog/dialog.d.ts +3 -3
  256. package/dist/types/components/dialog/scope.d.ts +1 -1
  257. package/dist/types/components/dialog/step-dialog.d.ts +1 -1
  258. package/dist/types/components/display-options/display-options.d.ts +1 -1
  259. package/dist/types/components/field/field.d.ts +1 -1
  260. package/dist/types/components/figure/docs.d.ts +12 -0
  261. package/dist/types/components/figure/figure.d.ts +25 -0
  262. package/dist/types/components/figure/index.d.ts +1 -0
  263. package/dist/types/components/list/list.d.ts +1 -1
  264. package/dist/types/components/list/row-checkbox.d.ts +1 -1
  265. package/dist/types/components/list/virtual-rows.d.ts +1 -1
  266. package/dist/types/components/menu/menu.d.ts +8 -8
  267. package/dist/types/components/playground/model-picker.d.ts +3 -3
  268. package/dist/types/components/playground/parameter-panel.d.ts +1 -1
  269. package/dist/types/components/popover/hover-card.d.ts +2 -2
  270. package/dist/types/components/popover/popover-root.d.ts +3 -3
  271. package/dist/types/components/radio/radio.d.ts +1 -1
  272. package/dist/types/components/select/option-checkbox.d.ts +1 -1
  273. package/dist/types/components/select/select.d.ts +4 -4
  274. package/dist/types/components/sheet/sheet.d.ts +4 -4
  275. package/dist/types/components/sidebar/sidebar-menu.d.ts +1 -1
  276. package/dist/types/components/sidebar/sidebar.d.ts +7 -7
  277. package/dist/types/components/table/docs.d.ts +3 -1
  278. package/dist/types/components/table/table.d.ts +18 -1
  279. package/dist/types/components/theme-menu/theme-menu.d.ts +1 -1
  280. package/dist/types/components/toast/toast.d.ts +3 -3
  281. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  282. package/dist/types/components/tooltip/tooltip-provider.d.ts +1 -1
  283. package/dist/types/components/tooltip/tooltip-root.d.ts +1 -1
  284. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  285. package/dist/types/hooks/use-scroll-fade.d.ts +2 -0
  286. package/dist/types/i18n/provider.d.ts +1 -1
  287. package/dist/types/index.d.ts +1 -0
  288. package/dist/types/theme/theme-provider.d.ts +1 -1
  289. package/dist/types/utils/cn.d.ts +7 -0
  290. package/dist/types/utils/inset.d.ts +2 -2
  291. package/dist/types/utils/link-provider.d.ts +1 -1
  292. package/dist/types/utils/portal-context.d.ts +1 -1
  293. package/dist/utils.js +1 -1
  294. package/foundations/color.md +1 -0
  295. package/package.json +8 -8
  296. package/dist/chunks/button-h2IFCER2.js.map +0 -1
  297. package/dist/chunks/cn-DUDmdLpZ.js.map +0 -1
  298. package/dist/chunks/code-block-BU8gYeZQ.js +0 -280
  299. package/dist/chunks/code-block-BU8gYeZQ.js.map +0 -1
  300. package/dist/chunks/collapsible-CDQq1Y9x.js.map +0 -1
  301. package/dist/chunks/command-list-DZMVrXWD.js.map +0 -1
  302. package/dist/chunks/copy-button-CXJ7fA9z.js +0 -109
  303. package/dist/chunks/copy-button-CXJ7fA9z.js.map +0 -1
  304. package/dist/chunks/core-Bu6iq5uh.js.map +0 -1
  305. package/dist/chunks/select-Bbv2f5F8.js.map +0 -1
  306. package/dist/chunks/switch-Cq1OfeBr.js.map +0 -1
  307. package/dist/chunks/table-D-36EM7f.js +0 -67
  308. package/dist/chunks/table-D-36EM7f.js.map +0 -1
  309. package/dist/components/scroll-area.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-DUDmdLpZ.js";
2
+ import { t as e } from "../chunks/cn-Dj6sRgkF.js";
3
3
  import { r as t } from "../chunks/portal-context-BBbzDKmY.js";
4
4
  import { i as n } from "../chunks/context-BELWW79w.js";
5
- import { t as r } from "../chunks/icon-BqujXDUc.js";
6
- import { i, r as a } from "../chunks/kbd-DqWmbr_e.js";
7
- import { t as o } from "../chunks/command-list-DZMVrXWD.js";
5
+ import { t as r } from "../chunks/icon-D7ja-_Yk.js";
6
+ import { i, r as a } from "../chunks/kbd-BF1vKXJf.js";
7
+ import { t as o } from "../chunks/command-list-0RR4DpUe.js";
8
8
  import { a as s, i as c, r as l, t as u } from "../chunks/resize-motion-DS3rIIqy.js";
9
9
  import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
10
10
  import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
@@ -16,12 +16,12 @@ function C(e, t) {
16
16
  let n = [e.label, ...e.keywords ?? []].join(" ").toLowerCase();
17
17
  return +!!t.toLowerCase().split(/\s+/).every((e) => n.includes(e));
18
18
  }
19
- function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange: f, close: b, inline: x, defaultQuery: S = "", query: w }) {
20
- let T = n(), E = c ?? T("commandPalette.placeholder", "Search or run a command"), [D, O] = h(S), k = w ?? D, A = (e) => {
21
- O(e), f?.(e);
22
- }, [j, M] = h([]), N = m(null), [P, F] = h(null), I = d((e) => F(x ? null : e?.parentElement ?? null), [x]);
23
- u(P);
24
- let L = j[j.length - 1], R = L ? L.groups : t, z = R.some((e) => e.loading), B = p(() => new Map(R.flatMap((e) => e.items.map((e) => [e.id, e]))), [R]), V = p(() => R.map((t, n) => ({
19
+ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange: f, close: b, inline: x, defaultQuery: S = "", query: w, counts: T }) {
20
+ let E = n(), D = c ?? E("commandPalette.placeholder", "Search or run a command"), [O, k] = h(S), A = w ?? O, j = (e) => {
21
+ k(e), f?.(e);
22
+ }, [M, N] = h([]), P = m(null), [F, I] = h(null), L = d((e) => I(x ? null : e?.parentElement ?? null), [x]);
23
+ u(F);
24
+ let R = M[M.length - 1], z = R ? R.groups : t, B = z.some((e) => e.loading), V = p(() => new Map(z.flatMap((e) => e.items.map((e) => [e.id, e]))), [z]), H = p(() => z.map((t, n) => ({
25
25
  id: `${n}:${t.label ?? ""}`,
26
26
  ...t.label ? { label: t.label } : {},
27
27
  ...t.loading ? { loading: !0 } : {},
@@ -53,40 +53,41 @@ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange
53
53
  })
54
54
  ] })
55
55
  }))
56
- })), [R]);
56
+ })), [z]);
57
57
  return /* @__PURE__ */ _("div", {
58
- ref: I,
58
+ ref: L,
59
59
  className: e("relative flex palette-limits min-h-0 flex-col overflow-hidden", x ? "w-640 rounded-palette bg-raised shadow-dialog" : "flex-1"),
60
60
  children: /* @__PURE__ */ _(o, {
61
- ref: N,
62
- groups: V,
63
- "aria-label": T("commandPalette.results", "Results"),
61
+ ref: P,
62
+ groups: H,
63
+ "aria-label": E("commandPalette.results", "Results"),
64
64
  size: "lg",
65
65
  height: "fill",
66
66
  escapeClears: !1,
67
67
  match: C,
68
+ counts: T,
68
69
  inputProps: { "data-palette-input": "" },
69
70
  autoFocus: !0,
70
- query: k,
71
- onQueryChange: A,
71
+ query: A,
72
+ onQueryChange: j,
72
73
  onSelect: (e) => {
73
- let t = B.get(e);
74
+ let t = V.get(e);
74
75
  if (!t) return;
75
76
  let n = t.children;
76
- n ? (M((e) => [...e, {
77
+ n ? (N((e) => [...e, {
77
78
  title: t.label,
78
79
  groups: n
79
- }]), A(""), N.current?.focus()) : (t.onSelect?.(), b());
80
+ }]), j(""), P.current?.focus()) : (t.onSelect?.(), b());
80
81
  },
81
- loading: z,
82
- placeholder: E,
83
- emptyText: l ?? T("commandPalette.noResults", "No results"),
84
- searchPrefix: L && /* @__PURE__ */ _("span", {
82
+ loading: B,
83
+ placeholder: D,
84
+ emptyText: l ?? E("commandPalette.noResults", "No results"),
85
+ searchPrefix: R && /* @__PURE__ */ _("span", {
85
86
  className: "inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg",
86
- children: L.title
87
+ children: R.title
87
88
  }),
88
89
  onInputKeyDown: (e) => {
89
- e.key === "Backspace" && !k && j.length && (e.preventDefault(), M((e) => e.slice(0, -1)));
90
+ e.key === "Backspace" && !A && M.length && (e.preventDefault(), N((e) => e.slice(0, -1)));
90
91
  },
91
92
  footer: s && /* @__PURE__ */ v("div", {
92
93
  className: "flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t",
@@ -97,7 +98,7 @@ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange
97
98
  /* @__PURE__ */ _(a, { children: "up" }),
98
99
  /* @__PURE__ */ _(a, { children: "down" }),
99
100
  " ",
100
- T("commandPalette.toNavigate", "to navigate")
101
+ E("commandPalette.toNavigate", "to navigate")
101
102
  ]
102
103
  }),
103
104
  /* @__PURE__ */ v("span", {
@@ -105,15 +106,15 @@ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange
105
106
  children: [
106
107
  /* @__PURE__ */ _(a, { children: "enter" }),
107
108
  " ",
108
- T("commandPalette.toOpen", "to open")
109
+ E("commandPalette.toOpen", "to open")
109
110
  ]
110
111
  }),
111
- j.length > 0 && /* @__PURE__ */ v("span", {
112
+ M.length > 0 && /* @__PURE__ */ v("span", {
112
113
  className: "inline-flex items-center gap-6",
113
114
  children: [
114
115
  /* @__PURE__ */ _(a, { children: "backspace" }),
115
116
  " ",
116
- T("commandPalette.toGoBack", "to go back")
117
+ E("commandPalette.toGoBack", "to go back")
117
118
  ]
118
119
  }),
119
120
  /* @__PURE__ */ v("span", {
@@ -121,7 +122,7 @@ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange
121
122
  children: [
122
123
  /* @__PURE__ */ _(a, { children: "esc" }),
123
124
  " ",
124
- T("commandPalette.toClose", "to close")
125
+ E("commandPalette.toClose", "to close")
125
126
  ]
126
127
  })
127
128
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"command-palette.js","names":["_Fragment","__icon_ArrowRight01Icon","BaseDialog","cn","usePortalContainer","useUiText","Icon","Kbd","CommandList","useRestoreFocus","useScopedDialog","useOpenSession","useResizeMotion","Fragment$1","KAESO_COMMAND_PALETTE_VARIANTS","KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS","matches","hay","item","w","Palette","placeholderProp","controlledQuery","t","placeholder","ownQuery","setOwnQuery","useState","defaultQuery","query","setQuery","next","onQueryChange","pages","setPages","input","useRef","box","setBox","boxRef","useCallback","inline","el","page","source","groups","loading","g","byId","useMemo","i","listGroups","gi","active","KbdSequence","ArrowRight01Icon","id","children","p","close","emptyText","keyHints","CommandPalette","props","inner","setInner","isOpen","open","setOpen","o","onOpenChange","toggle","useEffect","hotkey","onKey","focus","container","settled","session","Dialog"],"sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { useOpenSession, useScopedDialog } from \"../../utils/dialog-scope.js\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence, Kbd } from \"../kbd/kbd.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useResizeMotion } from \"../../utils/resize-motion.js\";\nimport { CommandList, type CommandListGroup, type CommandListItem, type CommandListRowState } from \"../command-list/command-list.js\";\n\nexport const KAESO_COMMAND_PALETTE_VARIANTS = {\n size: {\n md: { classes: \"w-640\" },\n },\n} as const;\nexport const KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface CommandItem {\n id: string;\n label: string;\n icon?: IconData | undefined;\n hint?: string | undefined;\n shortcut?: string[] | string[][] | undefined;\n keywords?: string[] | undefined;\n onSelect?: (() => void) | undefined;\n children?: CommandGroup[] | undefined;\n}\n\nexport interface CommandGroup {\n label?: string | undefined;\n items: CommandItem[];\n loading?: boolean | undefined;\n}\n\nexport interface CommandPaletteProps {\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n groups: CommandGroup[];\n placeholder?: string | undefined;\n emptyText?: ReactNode | undefined;\n onQueryChange?: ((query: string) => void) | undefined;\n hotkey?: boolean | undefined;\n keyHints?: boolean | undefined;\n inline?: boolean | undefined;\n defaultQuery?: string | undefined;\n query?: string | undefined;\n}\n\nfunction matches(item: CommandListItem, q: string) {\n const hay = [item.label, ...(item.keywords ?? [])].join(\" \").toLowerCase();\n return q\n .toLowerCase()\n .split(/\\s+/)\n .every((w) => hay.includes(w))\n ? 1\n : 0;\n}\n\nfunction Palette({\n groups,\n keyHints,\n placeholder: placeholderProp,\n emptyText,\n onQueryChange,\n close,\n inline,\n defaultQuery = \"\",\n query: controlledQuery,\n}: CommandPaletteProps & { close: () => void }) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"commandPalette.placeholder\", \"Search or run a command\");\n const [ownQuery, setOwnQuery] = useState(defaultQuery);\n const query = controlledQuery ?? ownQuery;\n const setQuery = (next: string) => {\n setOwnQuery(next);\n onQueryChange?.(next);\n };\n const [pages, setPages] = useState<{ title: string; groups: CommandGroup[] }[]>([]);\n const input = useRef<HTMLInputElement>(null);\n const [box, setBox] = useState<HTMLElement | null>(null);\n const boxRef = useCallback((el: HTMLElement | null) => setBox(inline ? null : (el?.parentElement ?? null)), [inline]);\n useResizeMotion(box);\n const page = pages[pages.length - 1];\n const source = page ? page.groups : groups;\n const loading = source.some((g) => g.loading);\n const byId = useMemo(() => new Map(source.flatMap((g) => g.items.map((i) => [i.id, i] as const))), [source]);\n const listGroups = useMemo<CommandListGroup[]>(\n () =>\n source.map((g, gi) => ({\n id: `${gi}:${g.label ?? \"\"}`,\n ...(g.label ? { label: g.label } : {}),\n ...(g.loading ? { loading: true } : {}),\n items: g.items.map((item) => ({\n value: item.id,\n label: item.label,\n keywords: [item.hint ?? \"\", ...(item.keywords ?? [])],\n render: ({ active }: CommandListRowState) => (\n <>\n {item.icon && <Icon icon={item.icon} size=\"sm\" className={active ? \"text-fg\" : \"text-fg-secondary\"} />}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.hint && (\n <span className={cn(\"min-w-0 truncate text-body font-regular\", active ? \"text-fg-secondary\" : \"text-fg-tertiary\")}>{item.hint}</span>\n )}\n <span className=\"ml-auto flex shrink-0 items-center gap-8\">\n {item.shortcut && <KbdSequence keys={item.shortcut} />}\n {item.children && <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"text-fg-tertiary\" />}\n </span>\n </>\n ),\n })),\n })),\n [source],\n );\n\n const select = (id: string) => {\n const item = byId.get(id);\n if (!item) return;\n const children = item.children;\n if (children) {\n setPages((p) => [...p, { title: item.label, groups: children }]);\n setQuery(\"\");\n input.current?.focus();\n return;\n }\n item.onSelect?.();\n close();\n };\n\n return (\n <div\n ref={boxRef}\n className={cn(\"relative flex palette-limits min-h-0 flex-col overflow-hidden\", inline ? \"w-640 rounded-palette bg-raised shadow-dialog\" : \"flex-1\")}\n >\n <CommandList\n ref={input}\n groups={listGroups}\n aria-label={t(\"commandPalette.results\", \"Results\")}\n size=\"lg\"\n height=\"fill\"\n escapeClears={false}\n match={matches}\n inputProps={{ \"data-palette-input\": \"\" }}\n autoFocus\n query={query}\n onQueryChange={setQuery}\n onSelect={select}\n loading={loading}\n placeholder={placeholder}\n emptyText={emptyText ?? t(\"commandPalette.noResults\", \"No results\")}\n searchPrefix={\n page && <span className=\"inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg\">{page.title}</span>\n }\n onInputKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !query && pages.length) {\n e.preventDefault();\n setPages((p) => p.slice(0, -1));\n }\n }}\n footer={\n keyHints && (\n <div className=\"flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t\">\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>up</Kbd>\n <Kbd>down</Kbd> {t(\"commandPalette.toNavigate\", \"to navigate\")}\n </span>\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>enter</Kbd> {t(\"commandPalette.toOpen\", \"to open\")}\n </span>\n {pages.length > 0 && (\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>backspace</Kbd> {t(\"commandPalette.toGoBack\", \"to go back\")}\n </span>\n )}\n <span className=\"ml-auto inline-flex items-center gap-6\">\n <Kbd>esc</Kbd> {t(\"commandPalette.toClose\", \"to close\")}\n </span>\n </div>\n )\n }\n />\n </div>\n );\n}\n\nexport function CommandPalette(props: CommandPaletteProps) {\n const { open, onOpenChange, hotkey = true, inline } = props;\n const [inner, setInner] = useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const toggle = useRef(() => setOpen(!isOpen));\n toggle.current = () => setOpen(!isOpen);\n useEffect(() => {\n if (!hotkey || inline) return;\n const onKey = (e: globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [hotkey, inline]);\n const focus = useRestoreFocus(isOpen);\n const t = useUiText();\n const container = usePortalContainer();\n const settled = useScopedDialog(inline ? false : isOpen);\n const session = useOpenSession(isOpen);\n if (inline) return <Palette {...props} close={() => undefined} />;\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)} onOpenChangeComplete={settled}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"fixed inset-0 z-50 bg-overlay backdrop-motion\" />\n <BaseDialog.Viewport className=\"fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette\">\n <BaseDialog.Popup\n aria-label={t(\"commandPalette.label\", \"Command palette\")}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className=\"flex w-640 max-w-full flex-col overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion\"\n >\n <Palette key={session} {...props} close={() => setOpen(false)} />\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") CommandPalette.displayName = \"CommandPalette\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"command-palette.js","names":["_Fragment","__icon_ArrowRight01Icon","BaseDialog","cn","usePortalContainer","useUiText","Icon","Kbd","CommandList","useRestoreFocus","useScopedDialog","useOpenSession","useResizeMotion","Fragment$1","KAESO_COMMAND_PALETTE_VARIANTS","KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS","matches","hay","item","w","Palette","placeholderProp","controlledQuery","t","placeholder","ownQuery","setOwnQuery","useState","defaultQuery","query","setQuery","next","onQueryChange","pages","setPages","input","useRef","box","setBox","boxRef","useCallback","inline","el","page","source","groups","loading","g","byId","useMemo","i","listGroups","gi","active","KbdSequence","ArrowRight01Icon","id","children","p","close","emptyText","keyHints","CommandPalette","props","inner","setInner","isOpen","open","setOpen","o","onOpenChange","toggle","useEffect","hotkey","onKey","focus","container","settled","session","Dialog"],"sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { useOpenSession, useScopedDialog } from \"../../utils/dialog-scope.js\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence, Kbd } from \"../kbd/kbd.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useResizeMotion } from \"../../utils/resize-motion.js\";\nimport { CommandList, type CommandListGroup, type CommandListItem, type CommandListRowState } from \"../command-list/command-list.js\";\n\nexport const KAESO_COMMAND_PALETTE_VARIANTS = {\n size: {\n md: { classes: \"w-640\" },\n },\n} as const;\nexport const KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface CommandItem {\n id: string;\n label: string;\n icon?: IconData | undefined;\n hint?: string | undefined;\n shortcut?: string[] | string[][] | undefined;\n keywords?: string[] | undefined;\n onSelect?: (() => void) | undefined;\n children?: CommandGroup[] | undefined;\n}\n\nexport interface CommandGroup {\n label?: string | undefined;\n items: CommandItem[];\n loading?: boolean | undefined;\n}\n\nexport interface CommandPaletteProps {\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n groups: CommandGroup[];\n placeholder?: string | undefined;\n emptyText?: ReactNode | undefined;\n onQueryChange?: ((query: string) => void) | undefined;\n hotkey?: boolean | undefined;\n keyHints?: boolean | undefined;\n inline?: boolean | undefined;\n defaultQuery?: string | undefined;\n query?: string | undefined;\n counts?: boolean | undefined;\n}\n\nfunction matches(item: CommandListItem, q: string) {\n const hay = [item.label, ...(item.keywords ?? [])].join(\" \").toLowerCase();\n return q\n .toLowerCase()\n .split(/\\s+/)\n .every((w) => hay.includes(w))\n ? 1\n : 0;\n}\n\nfunction Palette({\n groups,\n keyHints,\n placeholder: placeholderProp,\n emptyText,\n onQueryChange,\n close,\n inline,\n defaultQuery = \"\",\n query: controlledQuery,\n counts,\n}: CommandPaletteProps & { close: () => void }) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"commandPalette.placeholder\", \"Search or run a command\");\n const [ownQuery, setOwnQuery] = useState(defaultQuery);\n const query = controlledQuery ?? ownQuery;\n const setQuery = (next: string) => {\n setOwnQuery(next);\n onQueryChange?.(next);\n };\n const [pages, setPages] = useState<{ title: string; groups: CommandGroup[] }[]>([]);\n const input = useRef<HTMLInputElement>(null);\n const [box, setBox] = useState<HTMLElement | null>(null);\n const boxRef = useCallback((el: HTMLElement | null) => setBox(inline ? null : (el?.parentElement ?? null)), [inline]);\n useResizeMotion(box);\n const page = pages[pages.length - 1];\n const source = page ? page.groups : groups;\n const loading = source.some((g) => g.loading);\n const byId = useMemo(() => new Map(source.flatMap((g) => g.items.map((i) => [i.id, i] as const))), [source]);\n const listGroups = useMemo<CommandListGroup[]>(\n () =>\n source.map((g, gi) => ({\n id: `${gi}:${g.label ?? \"\"}`,\n ...(g.label ? { label: g.label } : {}),\n ...(g.loading ? { loading: true } : {}),\n items: g.items.map((item) => ({\n value: item.id,\n label: item.label,\n keywords: [item.hint ?? \"\", ...(item.keywords ?? [])],\n render: ({ active }: CommandListRowState) => (\n <>\n {item.icon && <Icon icon={item.icon} size=\"sm\" className={active ? \"text-fg\" : \"text-fg-secondary\"} />}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.hint && (\n <span className={cn(\"min-w-0 truncate text-body font-regular\", active ? \"text-fg-secondary\" : \"text-fg-tertiary\")}>{item.hint}</span>\n )}\n <span className=\"ml-auto flex shrink-0 items-center gap-8\">\n {item.shortcut && <KbdSequence keys={item.shortcut} />}\n {item.children && <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"text-fg-tertiary\" />}\n </span>\n </>\n ),\n })),\n })),\n [source],\n );\n\n const select = (id: string) => {\n const item = byId.get(id);\n if (!item) return;\n const children = item.children;\n if (children) {\n setPages((p) => [...p, { title: item.label, groups: children }]);\n setQuery(\"\");\n input.current?.focus();\n return;\n }\n item.onSelect?.();\n close();\n };\n\n return (\n <div\n ref={boxRef}\n className={cn(\"relative flex palette-limits min-h-0 flex-col overflow-hidden\", inline ? \"w-640 rounded-palette bg-raised shadow-dialog\" : \"flex-1\")}\n >\n <CommandList\n ref={input}\n groups={listGroups}\n aria-label={t(\"commandPalette.results\", \"Results\")}\n size=\"lg\"\n height=\"fill\"\n escapeClears={false}\n match={matches}\n counts={counts}\n inputProps={{ \"data-palette-input\": \"\" }}\n autoFocus\n query={query}\n onQueryChange={setQuery}\n onSelect={select}\n loading={loading}\n placeholder={placeholder}\n emptyText={emptyText ?? t(\"commandPalette.noResults\", \"No results\")}\n searchPrefix={\n page && <span className=\"inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg\">{page.title}</span>\n }\n onInputKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !query && pages.length) {\n e.preventDefault();\n setPages((p) => p.slice(0, -1));\n }\n }}\n footer={\n keyHints && (\n <div className=\"flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t\">\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>up</Kbd>\n <Kbd>down</Kbd> {t(\"commandPalette.toNavigate\", \"to navigate\")}\n </span>\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>enter</Kbd> {t(\"commandPalette.toOpen\", \"to open\")}\n </span>\n {pages.length > 0 && (\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>backspace</Kbd> {t(\"commandPalette.toGoBack\", \"to go back\")}\n </span>\n )}\n <span className=\"ml-auto inline-flex items-center gap-6\">\n <Kbd>esc</Kbd> {t(\"commandPalette.toClose\", \"to close\")}\n </span>\n </div>\n )\n }\n />\n </div>\n );\n}\n\nexport function CommandPalette(props: CommandPaletteProps) {\n const { open, onOpenChange, hotkey = true, inline } = props;\n const [inner, setInner] = useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const toggle = useRef(() => setOpen(!isOpen));\n toggle.current = () => setOpen(!isOpen);\n useEffect(() => {\n if (!hotkey || inline) return;\n const onKey = (e: globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [hotkey, inline]);\n const focus = useRestoreFocus(isOpen);\n const t = useUiText();\n const container = usePortalContainer();\n const settled = useScopedDialog(inline ? false : isOpen);\n const session = useOpenSession(isOpen);\n if (inline) return <Palette {...props} close={() => undefined} />;\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)} onOpenChangeComplete={settled}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"fixed inset-0 z-50 bg-overlay backdrop-motion\" />\n <BaseDialog.Viewport className=\"fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette\">\n <BaseDialog.Popup\n aria-label={t(\"commandPalette.label\", \"Command palette\")}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className=\"flex w-640 max-w-full flex-col overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion\"\n >\n <Palette key={session} {...props} close={() => setOpen(false)} />\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") CommandPalette.displayName = \"CommandPalette\";\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as ClipboardText, n as CopyButton, r as InlineCopyText, i as KAESO_CLIPBOARD_TEXT_DEFAULT_VARIANTS, a as KAESO_CLIPBOARD_TEXT_VARIANTS, o as KAESO_COPY_BUTTON_DEFAULT_VARIANTS, s as KAESO_COPY_BUTTON_VARIANTS } from "../chunks/copy-button-CXJ7fA9z.js";
2
+ export { t as ClipboardText, n as CopyButton, r as InlineCopyText, i as KAESO_CLIPBOARD_TEXT_DEFAULT_VARIANTS, a as KAESO_CLIPBOARD_TEXT_VARIANTS, o as KAESO_COPY_BUTTON_DEFAULT_VARIANTS, s as KAESO_COPY_BUTTON_VARIANTS } from "../chunks/copy-button-7-irieJw.js";
@@ -1,20 +1,20 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-DUDmdLpZ.js";
2
+ import { t as e } from "../chunks/cn-Dj6sRgkF.js";
3
3
  import { i as t, r as n } from "../chunks/inset-BnBj8NJV.js";
4
4
  import { i as r } from "../chunks/context-BELWW79w.js";
5
5
  import { formatDate as i, formatDuration as a, formatNumber as o, formatRelative as s, formatTokens as c, formatUSD as l } from "../format.js";
6
- import { t as ee } from "../chunks/icon-BqujXDUc.js";
7
- import { r as u } from "../chunks/tooltip-CTBnfiDH.js";
6
+ import { t as ee } from "../chunks/icon-D7ja-_Yk.js";
7
+ import { r as u } from "../chunks/tooltip-BMQ9BtPp.js";
8
8
  import { t as te } from "../chunks/observe-resize-DhxhmoyB.js";
9
- import { r as ne } from "../chunks/text-IoDy3Vxi.js";
10
- import { n as re } from "../chunks/button-h2IFCER2.js";
11
- import { n as d } from "../chunks/checkbox-C5yvSS7O.js";
12
- import { t as f } from "../chunks/menu-Bnfi9P3t.js";
13
- import { r as ie } from "../chunks/skeleton-BM797MAg.js";
14
- import { r as ae } from "../chunks/pagination-CLfsofo3.js";
15
- import { t as p } from "../chunks/empty-YXmSkKzR.js";
16
- import { i as m } from "../chunks/status-dot-BqVOlShY.js";
17
- import { t as oe } from "../chunks/avatar-DOzOhYJr.js";
9
+ import { r as ne } from "../chunks/text-DCGGNqTM.js";
10
+ import { n as re } from "../chunks/button-Dzu7_csE.js";
11
+ import { n as d } from "../chunks/checkbox-CDfC6E-M.js";
12
+ import { t as f } from "../chunks/menu-fl_QQb38.js";
13
+ import { r as ie } from "../chunks/skeleton-Dcz57Zyp.js";
14
+ import { r as ae } from "../chunks/pagination-BaY8jdli.js";
15
+ import { t as p } from "../chunks/empty-DvhyMXQq.js";
16
+ import { i as m } from "../chunks/status-dot-QJTF0Yv4.js";
17
+ import { t as oe } from "../chunks/avatar-CWbdwbJv.js";
18
18
  import { t as se } from "../chunks/scroll-parent-WXvzQcUo.js";
19
19
  import { t as ce } from "../chunks/tone-CWpsHPb6.js";
20
20
  import { t as le } from "../chunks/use-scroll-margin-DfdTc_5D.js";
@@ -154,7 +154,7 @@ function T({ data: i, columns: a, getRowId: o, density: s = "default", onRowClic
154
154
  overscan: 16,
155
155
  enabled: J,
156
156
  scrollMargin: Je
157
- }), Z = (t) => e("flex min-w-0 items-center px-12", P && t === 0 && "pl-20", P && t === G.length - 1 && "pr-20"), Q = (t) => (Se && t === 0 || qe && t === G.length - 1) && e("sticky z-10 group-hover/tr:bg-fill-1 group-aria-selected/tr:bg-fill-2 group-data-active/tr:bg-fill-2", t === 0 ? "left-0" : "right-0", P ? "bg-raised" : e("bg-panel", t === 0 ? "rounded-l-item" : "rounded-r-item")), Ye = !!c || !!u, Xe = Math.min(I, Math.max(q.length - 1, 0)), Ze = (e) => {
157
+ }), Z = (t) => e("flex min-w-0 items-center px-12", P && t === 0 && "pl-20", P && t === G.length - 1 && "pr-20"), Q = (t, n = !1) => (Se && t === 0 || qe && t === G.length - 1) && e("sticky z-10 group-hover/tr:bg-fill-1 group-aria-selected/tr:bg-fill-2 group-data-active/tr:bg-fill-2", t === 0 ? "left-0" : "right-0", P ? "bg-raised" : e("bg-panel", !n && (t === 0 ? "rounded-l-item" : "rounded-r-item"))), Ye = !!c || !!u, Xe = Math.min(I, Math.max(q.length - 1, 0)), Ze = (e) => {
158
158
  let t = Math.max(0, Math.min(q.length - 1, e));
159
159
  L(t), J && X.scrollToIndex(t, { align: "auto" });
160
160
  let n = () => H.current?.querySelector(`[data-row-index="${t}"]`), r = n();
@@ -239,7 +239,7 @@ function T({ data: i, columns: a, getRowId: o, density: s = "default", onRowClic
239
239
  return /* @__PURE__ */ x("div", {
240
240
  role: "columnheader",
241
241
  "aria-sort": a === "asc" ? "ascending" : a === "desc" ? "descending" : i ? "none" : void 0,
242
- className: e("group/th relative", Z(n), r?.align === "end" && "justify-end", Q(n), Q(n) && "hairline-b-strong"),
242
+ className: e("group/th relative", Z(n), r?.align === "end" && "justify-end", Q(n, !0), Q(n, !0) && "hairline-b-strong"),
243
243
  children: [i ? /* @__PURE__ */ x("button", {
244
244
  type: "button",
245
245
  onClick: t.column.getToggleSortingHandler(),
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.js","names":["__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","cn","useInset","useGutterPadded","useUiText","Icon","Tooltip","observeResize","Text","Button","CheckboxBox","ContextMenu","Skeleton","Pagination","Empty","StatusDot","Avatar","scrollParent","STATUS_TONE_TEXT","useScrollMargin","KAESO_DATA_TABLE_VARIANTS","KAESO_DATA_TABLE_DEFAULT_VARIANTS","ROW_H","DATA_TABLE_GROW_MIN","fitColumns","width","byPriority","columns","a","b","used","reserve","keep","c","kept","full","least","growMin","last","contentWidth","style","el","rowName","column","text","row","raw","DataTableInner","userColumns","sortingProp","ariaLabel","inset","padded","t","sortingInner","setSortingInner","useState","selectionInner","setSelectionInner","focusRow","setFocusRow","sorting","rowSelection","selection","useMemo","selectable","table","name","useReactTable","next","u","onSortingChange","onSelectionChange","getCoreRowModel","getSortedRowModel","manualSorting","getRowId","r","root","useRef","head","body","leaf","fitInput","fitKey","hiddenFor","fit","hiddenForRef","hiddenKey","setHiddenKey","useLayoutEffect","mode","hiddenIds","tight","overflow","hidden","onHiddenRef","onHiddenColumnsChange","cols","trackMin","gridStyle","pinEnd","rows","virtual","virtualizeAbove","getScrollElement","scrollMargin","virtualizer","useVirtualizer","density","cellPad","i","stickyCol","stickyFirstColumn","focusable","onRowClick","stop","focusAt","line","now","page","onRowKeyDown","to","renderRow","cells","activeRowId","freshRowIds","meta","cell","content","flexRender","tone","rowMenu","ref","className","loading","hg","h","sortable","dir","ArrowDown01Icon","ArrowUp01Icon","step","id","min","max","old","error","onRetry","empty","v","hasMore","loadingMore","DataTableBase","DataTable","make","get","ctx","sortingFn","Tokens","exact","formatNumber","value","formatTokens","RelativeTime","formatDate","formatRelative","col","formatUSD","options","formatDuration"],"sources":["../../src/components/data-table/data-table.tsx","../../src/components/data-table/columns.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef, useLayoutEffect, useMemo, useRef, useState, type CSSProperties, type KeyboardEvent, type ReactNode } from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useGutterPadded, useInset } from \"../../utils/inset.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CheckboxBox } from \"../checkbox/checkbox.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { Empty } from \"../empty/empty.js\";\nimport { Button } from \"../button/button.js\";\nimport { Pagination } from \"../pagination/pagination.js\";\nimport { ContextMenu } from \"../menu/menu.js\";\nimport { Text } from \"../text/text.js\";\nimport { STATUS_TONE_TEXT, type StatusTone } from \"../../utils/tone.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useScrollMargin } from \"../../hooks/use-scroll-margin.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_DATA_TABLE_VARIANTS = {\n density: {\n compact: { classes: \"h-36\" },\n default: { classes: \"h-40\" },\n comfortable: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_DATA_TABLE_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData, TValue> {\n align?: \"start\" | \"end\" | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n mono?: boolean | undefined;\n text?: ((row: TData) => string) | undefined;\n tone?: ((row: TData) => StatusTone | undefined) | undefined;\n }\n}\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: ColumnDef<T, any>[];\n getRowId?: ((row: T) => string) | undefined;\n density?: keyof typeof KAESO_DATA_TABLE_VARIANTS.density | undefined;\n onRowClick?: ((row: T) => void) | undefined;\n rowMenu?: ((row: T) => ReactNode) | undefined;\n selectable?: boolean | undefined;\n selection?: RowSelectionState | undefined;\n onSelectionChange?: ((selection: RowSelectionState) => void) | undefined;\n sorting?: SortingState | undefined;\n onSortingChange?: ((sorting: SortingState) => void) | undefined;\n manualSorting?: boolean | undefined;\n loading?: boolean | undefined;\n error?: ReactNode | undefined;\n onRetry?: (() => void) | undefined;\n empty?: ReactNode | undefined;\n hasMore?: boolean | undefined;\n loadingMore?: boolean | undefined;\n onLoadMore?: (() => void) | undefined;\n stickyFirstColumn?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n activeRowId?: string | undefined;\n freshRowIds?: ReadonlySet<string> | undefined;\n onHiddenColumnsChange?: ((ids: string[]) => void) | undefined;\n}\n\nconst ROW_H = { compact: 36, default: 40, comfortable: 48 } as const;\n\nexport const DATA_TABLE_GROW_MIN = 136;\n\ntype FitColumn = { id: string; size: number; priority: number; grow: boolean; minWidth: number | undefined; fixed?: boolean | undefined };\n\nexport function fitColumns(columns: FitColumn[], width: number, reserve = 48): { hidden: string[]; tight: boolean; overflow: boolean } {\n if (!width) return { hidden: [], tight: false, overflow: false };\n const byPriority = [...columns].sort((a, b) => a.priority - b.priority);\n let used = reserve;\n const keep = new Set<string>();\n for (const c of byPriority) {\n used += c.size;\n if (used <= width || c.priority <= 1 || c.fixed) keep.add(c.id);\n }\n const kept = columns.filter((c) => keep.has(c.id));\n const full = kept.reduce((a, c) => a + c.size, reserve);\n let least = kept.reduce((a, c) => a + (c.grow ? growMin(c) : c.size), 0);\n if (least > width && kept.some((c) => c.grow)) {\n const last = kept[kept.length - 1];\n for (const c of [...kept].reverse()) {\n if (least <= width) break;\n if (c.grow || c.fixed || c === last) continue;\n keep.delete(c.id);\n least -= c.size;\n }\n }\n return { hidden: columns.filter((c) => !keep.has(c.id)).map((c) => c.id), tight: full > width, overflow: least > width };\n}\n\nfunction contentWidth(el: HTMLElement): number {\n const style = getComputedStyle(el);\n return el.getBoundingClientRect().width - (parseFloat(style.paddingLeft) || 0) - (parseFloat(style.paddingRight) || 0);\n}\n\nfunction rowName<T>(column: ColumnDef<T, any> | undefined, row: Row<T>): string | undefined {\n if (!column?.id) return undefined;\n const text = column.meta?.text?.(row.original);\n if (text) return text;\n const raw = row.getValue(column.id);\n return typeof raw === \"string\" && raw ? raw : undefined;\n}\n\nconst growMin = (c: { size: number; minWidth: number | undefined }) => Math.min(c.size, c.minWidth ?? DATA_TABLE_GROW_MIN);\n\nfunction DataTableInner<T>(\n {\n data,\n columns: userColumns,\n getRowId,\n density = \"default\",\n onRowClick,\n rowMenu,\n selectable,\n selection,\n onSelectionChange,\n sorting: sortingProp,\n onSortingChange,\n manualSorting,\n loading,\n error,\n onRetry,\n empty,\n hasMore,\n loadingMore,\n onLoadMore,\n stickyFirstColumn,\n virtualizeAbove = 100,\n className,\n activeRowId,\n freshRowIds,\n onHiddenColumnsChange,\n \"aria-label\": ariaLabel,\n }: DataTableProps<T>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const inset = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n const [sortingInner, setSortingInner] = useState<SortingState>([]);\n const [selectionInner, setSelectionInner] = useState<RowSelectionState>({});\n const [focusRow, setFocusRow] = useState(0);\n const sorting = sortingProp ?? sortingInner;\n const rowSelection = selection ?? selectionInner;\n const columns = useMemo<ColumnDef<T, any>[]>(() => {\n if (!selectable) return userColumns;\n return [\n {\n id: \"__select\",\n size: 44,\n enableSorting: false,\n enableResizing: false,\n meta: { priority: 1 },\n header: ({ table }) => (\n <CheckboxBox\n aria-label={t(\"dataTable.selectAllRows\", \"Select all rows\")}\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onCheckedChange={(c) => table.toggleAllRowsSelected(c)}\n />\n ),\n cell: ({ row }) => {\n const name = rowName(userColumns[0], row);\n return (\n <CheckboxBox\n aria-label={name ? t(\"dataTable.selectNamed\", \"Select {name}\", { name }) : t(\"dataTable.selectRow\", \"Select row\")}\n checked={row.getIsSelected()}\n onCheckedChange={(c) => row.toggleSelected(c)}\n />\n );\n },\n },\n ...userColumns,\n ];\n }, [userColumns, selectable, t]);\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: (u) => {\n const next = typeof u === \"function\" ? u(sorting) : u;\n if (!sortingProp) setSortingInner(next);\n onSortingChange?.(next);\n },\n onRowSelectionChange: (u) => {\n const next = typeof u === \"function\" ? u(rowSelection) : u;\n if (!selection) setSelectionInner(next);\n onSelectionChange?.(next);\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualSorting: !!manualSorting,\n enableRowSelection: !!selectable,\n columnResizeMode: \"onChange\",\n ...(getRowId ? { getRowId: (r: T) => getRowId(r) } : {}),\n defaultColumn: { size: 140, minSize: 64, maxSize: 640 },\n });\n\n const root = useRef<HTMLDivElement | null>(null);\n const head = useRef<HTMLDivElement | null>(null);\n const body = useRef<HTMLDivElement | null>(null);\n const leaf = table.getVisibleLeafColumns();\n const fitInput = leaf.map((c) => ({\n id: c.id,\n size: c.getSize(),\n priority: c.columnDef.meta?.priority ?? 2,\n grow: !!c.columnDef.meta?.grow,\n minWidth: c.columnDef.meta?.minWidth,\n fixed: c.id === \"__select\",\n }));\n const fitKey = JSON.stringify(fitInput);\n const hiddenFor = (width: number) => {\n const fit = fitColumns(fitInput, width, inset ? 48 : 0);\n return `${fit.tight ? \"!\" : \"\"}${fit.overflow ? \">\" : \"\"}|${fit.hidden.join(\" \")}`;\n };\n const hiddenForRef = useRef(hiddenFor);\n hiddenForRef.current = hiddenFor;\n const [hiddenKey, setHiddenKey] = useState(\"|\");\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n return observeResize([el], ([e]) => setHiddenKey(hiddenForRef.current(Math.round(e?.contentRect.width ?? 0))));\n }, []);\n useLayoutEffect(() => {\n if (root.current) setHiddenKey(hiddenForRef.current(Math.round(contentWidth(root.current))));\n }, [fitKey]);\n const [mode = \"\", hiddenIds = \"\"] = hiddenKey.split(\"|\");\n const tight = mode.includes(\"!\");\n const overflow = mode.includes(\">\");\n const hidden = useMemo(() => new Set(hiddenIds.split(\" \").filter(Boolean)), [hiddenIds]);\n const onHiddenRef = useRef(onHiddenColumnsChange);\n onHiddenRef.current = onHiddenColumnsChange;\n useLayoutEffect(() => {\n onHiddenRef.current?.([...hidden]);\n }, [hidden]);\n const cols = leaf.filter((c) => !hidden.has(c.id));\n const trackMin = (c: (typeof cols)[number]) =>\n c.columnDef.meta?.grow ? (tight ? growMin({ size: c.getSize(), minWidth: c.columnDef.meta.minWidth }) : c.getSize()) : c.getSize();\n const template = cols.map((c) => (c.columnDef.meta?.grow ? `minmax(${trackMin(c)}px, 1fr)` : `${c.getSize()}px`)).join(\" \");\n const gridStyle: CSSProperties = { gridTemplateColumns: template, minWidth: cols.reduce((a, c) => a + trackMin(c), 0) };\n const pinEnd = overflow && cols.length > 1 && !cols[cols.length - 1]?.columnDef.meta?.grow;\n\n const rows = table.getRowModel().rows;\n const virtual = rows.length > virtualizeAbove;\n const getScrollElement = () => scrollParent(root.current);\n const scrollMargin = useScrollMargin(body, getScrollElement, rows.length);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement,\n estimateSize: () => ROW_H[density],\n overscan: 16,\n enabled: virtual,\n scrollMargin,\n });\n\n const cellPad = (i: number) => cn(\"flex min-w-0 items-center px-12\", inset && i === 0 && \"pl-20\", inset && i === cols.length - 1 && \"pr-20\");\n const stickyCol = (i: number) =>\n ((stickyFirstColumn && i === 0) || (pinEnd && i === cols.length - 1)) &&\n cn(\n \"sticky z-10 group-hover/tr:bg-fill-1 group-aria-selected/tr:bg-fill-2 group-data-active/tr:bg-fill-2\",\n i === 0 ? \"left-0\" : \"right-0\",\n inset ? \"bg-raised\" : cn(\"bg-panel\", i === 0 ? \"rounded-l-item\" : \"rounded-r-item\"),\n );\n\n const focusable = !!onRowClick || !!selectable;\n const stop = Math.min(focusRow, Math.max(rows.length - 1, 0));\n const focusAt = (i: number) => {\n const next = Math.max(0, Math.min(rows.length - 1, i));\n setFocusRow(next);\n if (virtual) virtualizer.scrollToIndex(next, { align: \"auto\" });\n const line = () => body.current?.querySelector<HTMLElement>(`[data-row-index=\"${next}\"]`);\n const now = line();\n if (now) now.focus();\n else requestAnimationFrame(() => line()?.focus());\n };\n const page = () => Math.max(1, Math.floor((getScrollElement()?.clientHeight ?? 400) / ROW_H[density]) - 1);\n const onRowKeyDown = (e: KeyboardEvent<HTMLDivElement>, row: Row<T>, i: number) => {\n if (e.target !== e.currentTarget || e.altKey || e.metaKey || e.ctrlKey) return;\n const to = { ArrowDown: i + 1, ArrowUp: i - 1, Home: 0, End: rows.length - 1, PageDown: i + page(), PageUp: i - page() }[e.key];\n if (to !== undefined) {\n e.preventDefault();\n focusAt(to);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n onRowClick?.(row.original);\n } else if (e.key === \" \" && selectable) {\n e.preventDefault();\n row.toggleSelected();\n }\n };\n\n const renderRow = (row: Row<T>, i: number, style?: CSSProperties) => {\n const cells = row.getVisibleCells().filter((c) => !hidden.has(c.column.id));\n const el = (\n <div\n role=\"row\"\n aria-rowindex={i + 2}\n aria-selected={selectable ? row.getIsSelected() : undefined}\n data-active={row.id === activeRowId || undefined}\n data-fresh={freshRowIds?.has(row.id) || undefined}\n data-row-index={i}\n tabIndex={focusable ? (i === stop ? 0 : -1) : undefined}\n onFocus={(e) => {\n if (e.target === e.currentTarget && i !== focusRow) setFocusRow(i);\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n onRowClick?.(row.original);\n }}\n onKeyDown={(e) => onRowKeyDown(e, row, i)}\n style={{ ...gridStyle, ...style }}\n className={cn(\n \"group/tr grid w-full text-body text-fg transition-control focus-ring-inset\",\n !inset && \"rounded-item\",\n KAESO_DATA_TABLE_VARIANTS.density[density].classes,\n onRowClick && \"cursor-pointer\",\n \"hover:bg-fill-1 aria-selected:bg-fill-2 data-active:bg-fill-2 data-fresh:animate-row-fresh\",\n \"hover:controls-on-fill aria-selected:controls-on-fill data-active:controls-on-fill\",\n )}\n >\n {cells.map((cell, i) => {\n const meta = cell.column.columnDef.meta;\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n const raw = cell.getValue();\n const text = meta?.text ? meta.text(row.original) : typeof raw === \"string\" ? raw : undefined;\n const tone = meta?.tone?.(row.original);\n return (\n <div\n key={cell.id}\n role=\"cell\"\n className={cn(\n cellPad(i),\n meta?.align === \"end\" && \"justify-end text-right tabular\",\n meta?.mono && \"mono text-small\",\n tone && STATUS_TONE_TEXT[tone],\n stickyCol(i),\n )}\n >\n {text !== undefined && typeof content !== \"object\" ? (\n <Text truncate tone={tone ?? \"default\"} className={cn(\"min-w-0\", meta?.mono && \"text-small\")} mono={!!meta?.mono}>\n {text}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate cell-fit\", meta?.grow && \"flex-1\")}>{content}</span>\n )}\n </div>\n );\n })}\n </div>\n );\n if (!rowMenu) return <div key={row.id}>{el}</div>;\n return (\n <ContextMenu key={row.id}>\n <ContextMenu.Trigger>{el}</ContextMenu.Trigger>\n <ContextMenu.Content>{rowMenu(row.original)}</ContextMenu.Content>\n </ContextMenu>\n );\n };\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) (ref as { current: HTMLDivElement | null }).current = e;\n }}\n className={cn(\"relative w-full min-w-0\", !inset && !padded && \"px-24\", className)}\n >\n <div\n role=\"table\"\n aria-label={ariaLabel}\n aria-rowcount={rows.length + 1}\n aria-busy={loading || undefined}\n className={cn(\"w-full overflow-clip\", inset && \"rounded-group bg-raised shadow-xs\")}\n >\n <div\n ref={head}\n role=\"rowgroup\"\n className={cn(\"sticky top-0 z-20 overflow-hidden\", inset ? \"bg-raised\" : \"bg-panel\")}\n onScroll={(e) => {\n if (body.current && body.current.scrollLeft !== e.currentTarget.scrollLeft) body.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {table.getHeaderGroups().map((hg) => (\n <div key={hg.id} role=\"row\" aria-rowindex={1} className=\"grid h-36 hairline-b-strong\" style={gridStyle}>\n {hg.headers\n .filter((h) => !hidden.has(h.column.id))\n .map((h, i) => {\n const meta = h.column.columnDef.meta;\n const sortable = h.column.getCanSort();\n const dir = h.column.getIsSorted();\n return (\n <div\n key={h.id}\n role=\"columnheader\"\n aria-sort={dir === \"asc\" ? \"ascending\" : dir === \"desc\" ? \"descending\" : sortable ? \"none\" : undefined}\n className={cn(\"group/th relative\", cellPad(i), meta?.align === \"end\" && \"justify-end\", stickyCol(i), stickyCol(i) && \"hairline-b-strong\")}\n >\n {sortable ? (\n <button\n type=\"button\"\n onClick={h.column.getToggleSortingHandler()}\n className={cn(\n \"relative -mx-6 inline-flex h-28 min-w-0 cursor-pointer items-center gap-4 rounded-pill px-6 text-caption font-medium transition-control hover:bg-fill-1 hover:text-fg focus-ring tap-target\",\n dir ? \"text-fg\" : \"text-fg-secondary\",\n meta?.align === \"end\" && \"flex-row-reverse\",\n )}\n >\n <span className=\"truncate\">{flexRender(h.column.columnDef.header, h.getContext())}</span>\n <Icon\n icon={dir === \"desc\" ? __icon_ArrowDown01Icon : __icon_ArrowUp01Icon}\n size=\"xs\"\n className={cn(\"shrink-0 transition-control\", dir ? \"opacity-100\" : \"opacity-0 group-hover/th:opacity-60\")}\n />\n </button>\n ) : (\n <span className=\"truncate text-caption font-medium text-fg-secondary\">{flexRender(h.column.columnDef.header, h.getContext())}</span>\n )}\n {h.column.getCanResize() && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"dataTable.resizeColumn\", \"Resize column\")}\n aria-valuenow={h.column.getSize()}\n aria-valuemin={h.column.columnDef.minSize ?? 64}\n aria-valuemax={h.column.columnDef.maxSize ?? 640}\n tabIndex={0}\n onKeyDown={(e) => {\n const step = { ArrowLeft: -16, ArrowRight: 16 }[e.key];\n if (step === undefined) return;\n e.preventDefault();\n const id = h.column.id;\n const min = h.column.columnDef.minSize ?? 64;\n const max = h.column.columnDef.maxSize ?? 640;\n table.setColumnSizing((old) => ({ ...old, [id]: Math.max(min, Math.min(max, h.column.getSize() + step)) }));\n }}\n onMouseDown={h.getResizeHandler()}\n onTouchStart={h.getResizeHandler()}\n onDoubleClick={() => h.column.resetSize()}\n className=\"absolute top-8 right-0 bottom-8 w-8 cursor-col-resize rounded-pill after:absolute after:inset-y-0 after:right-0 after:w-1 after:bg-transparent after:transition-control group-hover/th:after:bg-line-strong focus-ring-inset\"\n />\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div\n ref={body}\n role=\"rowgroup\"\n className=\"overflow-x-auto scrollbar-quiet\"\n onScroll={(e) => {\n if (head.current && head.current.scrollLeft !== e.currentTarget.scrollLeft) head.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {error ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n <div role=\"alert\">\n <Empty\n size=\"compact\"\n title={t(\"dataTable.loadFailed\", \"Couldn't load these rows\")}\n actions={\n onRetry && (\n <Button size=\"sm\" onClick={onRetry}>\n {t(\"dataTable.tryAgain\", \"Try again\")}\n </Button>\n )\n }\n />\n </div>\n </div>\n </div>\n ) : loading && rows.length === 0 ? (\n Array.from({ length: 8 }, (_, r) => (\n <div key={r} role=\"row\" className={cn(\"grid\", KAESO_DATA_TABLE_VARIANTS.density[density].classes)} style={gridStyle}>\n {cols.map((c, i) => (\n <div key={c.id} role=\"cell\" className={cn(cellPad(i), c.columnDef.meta?.align === \"end\" && \"justify-end\")}>\n <Skeleton shape=\"line\" style={{ width: `${40 + ((r * 7 + i * 13) % 45)}%` }} />\n </div>\n ))}\n </div>\n ))\n ) : rows.length === 0 ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n {empty ?? (\n <Empty size=\"compact\" title={t(\"dataTable.noRows\", \"No rows\")} description={t(\"dataTable.noMatches\", \"Nothing matches these filters.\")} />\n )}\n </div>\n </div>\n ) : virtual ? (\n <div className=\"relative\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((v) =>\n renderRow(rows[v.index]!, v.index, {\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: `translateY(${Math.round(v.start - scrollMargin)}px)`,\n }),\n )}\n </div>\n ) : (\n rows.map((r, i) => renderRow(r, i))\n )}\n </div>\n </div>\n {hasMore && <Pagination variant=\"load-more\" hasMore loading={loadingMore} onLoadMore={onLoadMore} />}\n </div>\n );\n}\n\nconst DataTableBase = /* @__PURE__ */ forwardRef(DataTableInner);\nif (process.env.NODE_ENV !== \"production\") DataTableBase.displayName = \"DataTable\";\nexport const DataTable = DataTableBase as unknown as <T>(\n p: DataTableProps<T> & { ref?: React.Ref<HTMLDivElement> | undefined },\n) => ReturnType<typeof DataTableInner>;\n","import type { ColumnDef } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\nimport { formatDate, formatDuration, formatRelative, formatTokens, formatUSD, formatNumber } from \"../../format/index.js\";\nimport { StatusDot, type StatusDotProps } from \"../status-dot/status-dot.js\";\nimport { Avatar } from \"../avatar/avatar.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { StatusTone } from \"../../utils/tone.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\ntype Base<T = never> = {\n id: string;\n header: ReactNode;\n size?: number | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n tone?: ((row: T) => StatusTone | undefined) | undefined;\n};\ntype Accessor<T, V> = (row: T) => V;\n\nfunction make<T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: object = {},\n sortingFn?: ColumnDef<T, V>[\"sortingFn\"],\n): ColumnDef<T, V> {\n return {\n id: b.id,\n header: () => b.header,\n accessorFn: get,\n cell: (ctx) => cell(ctx.getValue() as V, ctx.row.original),\n ...(b.size ? { size: b.size } : {}),\n ...(sortingFn ? { sortingFn } : {}),\n meta: {\n ...(b.priority !== undefined ? { priority: b.priority } : {}),\n ...(b.grow ? { grow: true } : {}),\n ...(b.minWidth !== undefined ? { minWidth: b.minWidth } : {}),\n ...(b.tone ? { tone: b.tone } : {}),\n ...meta,\n },\n };\n}\n\nfunction Tokens({ value }: { value: number }) {\n const t = useUiText();\n const exact = t(\"dataTable.tokenCount\", \"{count} tokens\", { count: formatNumber(value) });\n return (\n <Tooltip content={exact}>\n <span>\n <span aria-hidden>{formatTokens(value)}</span>\n <span className=\"sr-only\">{exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nfunction RelativeTime({ value, now }: { value: string | Date; now: Date | number }) {\n const exact = formatDate(value, { time: true, seconds: true });\n return (\n <Tooltip content={`${exact} · ${formatDate(value, { time: true, utc: true })}`} shape=\"multiline\">\n <span className=\"text-fg-secondary\">\n <time dateTime={new Date(value).toISOString()}>{formatRelative(value, now)}</time>\n <span className=\"sr-only\"> {exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nexport const col = {\n text: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { text: (r: T) => get(r) }),\n mono: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { mono: true, text: (r: T) => get(r) }),\n number: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatNumber(v), { align: \"end\" }),\n money: <T,>(b: Base<T>, get: Accessor<T, string>, options: { decimals?: number | undefined } = {}) =>\n make(\n b,\n get,\n (v) => formatUSD(v, options.decimals === undefined ? {} : { decimals: options.decimals }),\n { align: \"end\", mono: false },\n (a, c, id) => Number(a.getValue(id)) - Number(c.getValue(id)),\n ),\n tokens: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => <Tokens value={v} />, { align: \"end\" }),\n duration: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatDuration(v), { align: \"end\" }),\n date: <T,>(b: Base<T>, get: Accessor<T, string | Date>) =>\n make(b, get, (v) => <time dateTime={new Date(v).toISOString()}>{formatDate(v, { time: true })}</time>, {}, \"datetime\"),\n relative: <T,>(b: Base<T>, get: Accessor<T, string | Date>, options: { now?: Date | number | undefined } = {}) =>\n make(\n b,\n get,\n (v) => <RelativeTime value={v} now={options.now ?? Date.now()} />,\n {},\n (a, c, id) => new Date(a.getValue(id) as string).getTime() - new Date(c.getValue(id) as string).getTime(),\n ),\n status: <T,>(b: Base<T>, get: Accessor<T, { tone: NonNullable<StatusDotProps[\"tone\"]>; label: string }>) =>\n make(b, get, (v) => <StatusDot tone={v.tone}>{v.label}</StatusDot>, { text: undefined }),\n avatar: <T,>(b: Base<T>, get: Accessor<T, { name: string; src?: string | undefined }>) =>\n make(b, get, (v) => (\n <span className=\"inline-flex min-w-0 items-center gap-8\">\n <Avatar name={v.name} {...(v.src ? { src: v.src } : {})} size={24} decorative />\n <span className=\"truncate\">{v.name}</span>\n </span>\n )),\n custom: <T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: { align?: \"start\" | \"end\" | undefined; mono?: boolean | undefined } = {},\n ) => make(b, get, cell, meta),\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.js","names":["__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","cn","useInset","useGutterPadded","useUiText","Icon","Tooltip","observeResize","Text","Button","CheckboxBox","ContextMenu","Skeleton","Pagination","Empty","StatusDot","Avatar","scrollParent","STATUS_TONE_TEXT","useScrollMargin","KAESO_DATA_TABLE_VARIANTS","KAESO_DATA_TABLE_DEFAULT_VARIANTS","ROW_H","DATA_TABLE_GROW_MIN","fitColumns","width","byPriority","columns","a","b","used","reserve","keep","c","kept","full","least","growMin","last","contentWidth","style","el","rowName","column","text","row","raw","DataTableInner","userColumns","sortingProp","ariaLabel","inset","padded","t","sortingInner","setSortingInner","useState","selectionInner","setSelectionInner","focusRow","setFocusRow","sorting","rowSelection","selection","useMemo","selectable","table","name","useReactTable","next","u","onSortingChange","onSelectionChange","getCoreRowModel","getSortedRowModel","manualSorting","getRowId","r","root","useRef","head","body","leaf","fitInput","fitKey","hiddenFor","fit","hiddenForRef","hiddenKey","setHiddenKey","useLayoutEffect","mode","hiddenIds","tight","overflow","hidden","onHiddenRef","onHiddenColumnsChange","cols","trackMin","gridStyle","pinEnd","rows","virtual","virtualizeAbove","getScrollElement","scrollMargin","virtualizer","useVirtualizer","density","cellPad","i","stickyCol","stickyFirstColumn","header","focusable","onRowClick","stop","focusAt","line","now","page","onRowKeyDown","to","renderRow","cells","activeRowId","freshRowIds","meta","cell","content","flexRender","tone","rowMenu","ref","className","loading","hg","h","sortable","dir","ArrowDown01Icon","ArrowUp01Icon","step","id","min","max","old","error","onRetry","empty","v","hasMore","loadingMore","DataTableBase","DataTable","make","get","ctx","sortingFn","Tokens","exact","formatNumber","value","formatTokens","RelativeTime","formatDate","formatRelative","col","formatUSD","options","formatDuration"],"sources":["../../src/components/data-table/data-table.tsx","../../src/components/data-table/columns.tsx"],"sourcesContent":["import type * as React from \"react\";\nimport { forwardRef, useLayoutEffect, useMemo, useRef, useState, type CSSProperties, type KeyboardEvent, type ReactNode } from \"react\";\nimport {\n flexRender,\n getCoreRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type Row,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { cn } from \"../../utils/cn.js\";\nimport { observeResize } from \"../../utils/observe-resize.js\";\nimport { useGutterPadded, useInset } from \"../../utils/inset.js\";\nimport { ArrowDown01Icon as __icon_ArrowDown01Icon, ArrowUp01Icon as __icon_ArrowUp01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon } from \"../icon/icon.js\";\nimport { CheckboxBox } from \"../checkbox/checkbox.js\";\nimport { Skeleton } from \"../skeleton/skeleton.js\";\nimport { Empty } from \"../empty/empty.js\";\nimport { Button } from \"../button/button.js\";\nimport { Pagination } from \"../pagination/pagination.js\";\nimport { ContextMenu } from \"../menu/menu.js\";\nimport { Text } from \"../text/text.js\";\nimport { STATUS_TONE_TEXT, type StatusTone } from \"../../utils/tone.js\";\nimport { scrollParent } from \"../../hooks/scroll-parent.js\";\nimport { useScrollMargin } from \"../../hooks/use-scroll-margin.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_DATA_TABLE_VARIANTS = {\n density: {\n compact: { classes: \"h-36\" },\n default: { classes: \"h-40\" },\n comfortable: { classes: \"h-48\" },\n },\n} as const;\nexport const KAESO_DATA_TABLE_DEFAULT_VARIANTS = { density: \"default\" } as const;\n\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData, TValue> {\n align?: \"start\" | \"end\" | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n mono?: boolean | undefined;\n text?: ((row: TData) => string) | undefined;\n tone?: ((row: TData) => StatusTone | undefined) | undefined;\n }\n}\n\nexport interface DataTableProps<T> {\n data: T[];\n columns: ColumnDef<T, any>[];\n getRowId?: ((row: T) => string) | undefined;\n density?: keyof typeof KAESO_DATA_TABLE_VARIANTS.density | undefined;\n onRowClick?: ((row: T) => void) | undefined;\n rowMenu?: ((row: T) => ReactNode) | undefined;\n selectable?: boolean | undefined;\n selection?: RowSelectionState | undefined;\n onSelectionChange?: ((selection: RowSelectionState) => void) | undefined;\n sorting?: SortingState | undefined;\n onSortingChange?: ((sorting: SortingState) => void) | undefined;\n manualSorting?: boolean | undefined;\n loading?: boolean | undefined;\n error?: ReactNode | undefined;\n onRetry?: (() => void) | undefined;\n empty?: ReactNode | undefined;\n hasMore?: boolean | undefined;\n loadingMore?: boolean | undefined;\n onLoadMore?: (() => void) | undefined;\n stickyFirstColumn?: boolean | undefined;\n virtualizeAbove?: number | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n activeRowId?: string | undefined;\n freshRowIds?: ReadonlySet<string> | undefined;\n onHiddenColumnsChange?: ((ids: string[]) => void) | undefined;\n}\n\nconst ROW_H = { compact: 36, default: 40, comfortable: 48 } as const;\n\nexport const DATA_TABLE_GROW_MIN = 136;\n\ntype FitColumn = { id: string; size: number; priority: number; grow: boolean; minWidth: number | undefined; fixed?: boolean | undefined };\n\nexport function fitColumns(columns: FitColumn[], width: number, reserve = 48): { hidden: string[]; tight: boolean; overflow: boolean } {\n if (!width) return { hidden: [], tight: false, overflow: false };\n const byPriority = [...columns].sort((a, b) => a.priority - b.priority);\n let used = reserve;\n const keep = new Set<string>();\n for (const c of byPriority) {\n used += c.size;\n if (used <= width || c.priority <= 1 || c.fixed) keep.add(c.id);\n }\n const kept = columns.filter((c) => keep.has(c.id));\n const full = kept.reduce((a, c) => a + c.size, reserve);\n let least = kept.reduce((a, c) => a + (c.grow ? growMin(c) : c.size), 0);\n if (least > width && kept.some((c) => c.grow)) {\n const last = kept[kept.length - 1];\n for (const c of [...kept].reverse()) {\n if (least <= width) break;\n if (c.grow || c.fixed || c === last) continue;\n keep.delete(c.id);\n least -= c.size;\n }\n }\n return { hidden: columns.filter((c) => !keep.has(c.id)).map((c) => c.id), tight: full > width, overflow: least > width };\n}\n\nfunction contentWidth(el: HTMLElement): number {\n const style = getComputedStyle(el);\n return el.getBoundingClientRect().width - (parseFloat(style.paddingLeft) || 0) - (parseFloat(style.paddingRight) || 0);\n}\n\nfunction rowName<T>(column: ColumnDef<T, any> | undefined, row: Row<T>): string | undefined {\n if (!column?.id) return undefined;\n const text = column.meta?.text?.(row.original);\n if (text) return text;\n const raw = row.getValue(column.id);\n return typeof raw === \"string\" && raw ? raw : undefined;\n}\n\nconst growMin = (c: { size: number; minWidth: number | undefined }) => Math.min(c.size, c.minWidth ?? DATA_TABLE_GROW_MIN);\n\nfunction DataTableInner<T>(\n {\n data,\n columns: userColumns,\n getRowId,\n density = \"default\",\n onRowClick,\n rowMenu,\n selectable,\n selection,\n onSelectionChange,\n sorting: sortingProp,\n onSortingChange,\n manualSorting,\n loading,\n error,\n onRetry,\n empty,\n hasMore,\n loadingMore,\n onLoadMore,\n stickyFirstColumn,\n virtualizeAbove = 100,\n className,\n activeRowId,\n freshRowIds,\n onHiddenColumnsChange,\n \"aria-label\": ariaLabel,\n }: DataTableProps<T>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const inset = useInset();\n const padded = useGutterPadded();\n const t = useUiText();\n const [sortingInner, setSortingInner] = useState<SortingState>([]);\n const [selectionInner, setSelectionInner] = useState<RowSelectionState>({});\n const [focusRow, setFocusRow] = useState(0);\n const sorting = sortingProp ?? sortingInner;\n const rowSelection = selection ?? selectionInner;\n const columns = useMemo<ColumnDef<T, any>[]>(() => {\n if (!selectable) return userColumns;\n return [\n {\n id: \"__select\",\n size: 44,\n enableSorting: false,\n enableResizing: false,\n meta: { priority: 1 },\n header: ({ table }) => (\n <CheckboxBox\n aria-label={t(\"dataTable.selectAllRows\", \"Select all rows\")}\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onCheckedChange={(c) => table.toggleAllRowsSelected(c)}\n />\n ),\n cell: ({ row }) => {\n const name = rowName(userColumns[0], row);\n return (\n <CheckboxBox\n aria-label={name ? t(\"dataTable.selectNamed\", \"Select {name}\", { name }) : t(\"dataTable.selectRow\", \"Select row\")}\n checked={row.getIsSelected()}\n onCheckedChange={(c) => row.toggleSelected(c)}\n />\n );\n },\n },\n ...userColumns,\n ];\n }, [userColumns, selectable, t]);\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, rowSelection },\n onSortingChange: (u) => {\n const next = typeof u === \"function\" ? u(sorting) : u;\n if (!sortingProp) setSortingInner(next);\n onSortingChange?.(next);\n },\n onRowSelectionChange: (u) => {\n const next = typeof u === \"function\" ? u(rowSelection) : u;\n if (!selection) setSelectionInner(next);\n onSelectionChange?.(next);\n },\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n manualSorting: !!manualSorting,\n enableRowSelection: !!selectable,\n columnResizeMode: \"onChange\",\n ...(getRowId ? { getRowId: (r: T) => getRowId(r) } : {}),\n defaultColumn: { size: 140, minSize: 64, maxSize: 640 },\n });\n\n const root = useRef<HTMLDivElement | null>(null);\n const head = useRef<HTMLDivElement | null>(null);\n const body = useRef<HTMLDivElement | null>(null);\n const leaf = table.getVisibleLeafColumns();\n const fitInput = leaf.map((c) => ({\n id: c.id,\n size: c.getSize(),\n priority: c.columnDef.meta?.priority ?? 2,\n grow: !!c.columnDef.meta?.grow,\n minWidth: c.columnDef.meta?.minWidth,\n fixed: c.id === \"__select\",\n }));\n const fitKey = JSON.stringify(fitInput);\n const hiddenFor = (width: number) => {\n const fit = fitColumns(fitInput, width, inset ? 48 : 0);\n return `${fit.tight ? \"!\" : \"\"}${fit.overflow ? \">\" : \"\"}|${fit.hidden.join(\" \")}`;\n };\n const hiddenForRef = useRef(hiddenFor);\n hiddenForRef.current = hiddenFor;\n const [hiddenKey, setHiddenKey] = useState(\"|\");\n useLayoutEffect(() => {\n const el = root.current;\n if (!el) return;\n return observeResize([el], ([e]) => setHiddenKey(hiddenForRef.current(Math.round(e?.contentRect.width ?? 0))));\n }, []);\n useLayoutEffect(() => {\n if (root.current) setHiddenKey(hiddenForRef.current(Math.round(contentWidth(root.current))));\n }, [fitKey]);\n const [mode = \"\", hiddenIds = \"\"] = hiddenKey.split(\"|\");\n const tight = mode.includes(\"!\");\n const overflow = mode.includes(\">\");\n const hidden = useMemo(() => new Set(hiddenIds.split(\" \").filter(Boolean)), [hiddenIds]);\n const onHiddenRef = useRef(onHiddenColumnsChange);\n onHiddenRef.current = onHiddenColumnsChange;\n useLayoutEffect(() => {\n onHiddenRef.current?.([...hidden]);\n }, [hidden]);\n const cols = leaf.filter((c) => !hidden.has(c.id));\n const trackMin = (c: (typeof cols)[number]) =>\n c.columnDef.meta?.grow ? (tight ? growMin({ size: c.getSize(), minWidth: c.columnDef.meta.minWidth }) : c.getSize()) : c.getSize();\n const template = cols.map((c) => (c.columnDef.meta?.grow ? `minmax(${trackMin(c)}px, 1fr)` : `${c.getSize()}px`)).join(\" \");\n const gridStyle: CSSProperties = { gridTemplateColumns: template, minWidth: cols.reduce((a, c) => a + trackMin(c), 0) };\n const pinEnd = overflow && cols.length > 1 && !cols[cols.length - 1]?.columnDef.meta?.grow;\n\n const rows = table.getRowModel().rows;\n const virtual = rows.length > virtualizeAbove;\n const getScrollElement = () => scrollParent(root.current);\n const scrollMargin = useScrollMargin(body, getScrollElement, rows.length);\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement,\n estimateSize: () => ROW_H[density],\n overscan: 16,\n enabled: virtual,\n scrollMargin,\n });\n\n const cellPad = (i: number) => cn(\"flex min-w-0 items-center px-12\", inset && i === 0 && \"pl-20\", inset && i === cols.length - 1 && \"pr-20\");\n const stickyCol = (i: number, header = false) =>\n ((stickyFirstColumn && i === 0) || (pinEnd && i === cols.length - 1)) &&\n cn(\n \"sticky z-10 group-hover/tr:bg-fill-1 group-aria-selected/tr:bg-fill-2 group-data-active/tr:bg-fill-2\",\n i === 0 ? \"left-0\" : \"right-0\",\n inset ? \"bg-raised\" : cn(\"bg-panel\", !header && (i === 0 ? \"rounded-l-item\" : \"rounded-r-item\")),\n );\n\n const focusable = !!onRowClick || !!selectable;\n const stop = Math.min(focusRow, Math.max(rows.length - 1, 0));\n const focusAt = (i: number) => {\n const next = Math.max(0, Math.min(rows.length - 1, i));\n setFocusRow(next);\n if (virtual) virtualizer.scrollToIndex(next, { align: \"auto\" });\n const line = () => body.current?.querySelector<HTMLElement>(`[data-row-index=\"${next}\"]`);\n const now = line();\n if (now) now.focus();\n else requestAnimationFrame(() => line()?.focus());\n };\n const page = () => Math.max(1, Math.floor((getScrollElement()?.clientHeight ?? 400) / ROW_H[density]) - 1);\n const onRowKeyDown = (e: KeyboardEvent<HTMLDivElement>, row: Row<T>, i: number) => {\n if (e.target !== e.currentTarget || e.altKey || e.metaKey || e.ctrlKey) return;\n const to = { ArrowDown: i + 1, ArrowUp: i - 1, Home: 0, End: rows.length - 1, PageDown: i + page(), PageUp: i - page() }[e.key];\n if (to !== undefined) {\n e.preventDefault();\n focusAt(to);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n onRowClick?.(row.original);\n } else if (e.key === \" \" && selectable) {\n e.preventDefault();\n row.toggleSelected();\n }\n };\n\n const renderRow = (row: Row<T>, i: number, style?: CSSProperties) => {\n const cells = row.getVisibleCells().filter((c) => !hidden.has(c.column.id));\n const el = (\n <div\n role=\"row\"\n aria-rowindex={i + 2}\n aria-selected={selectable ? row.getIsSelected() : undefined}\n data-active={row.id === activeRowId || undefined}\n data-fresh={freshRowIds?.has(row.id) || undefined}\n data-row-index={i}\n tabIndex={focusable ? (i === stop ? 0 : -1) : undefined}\n onFocus={(e) => {\n if (e.target === e.currentTarget && i !== focusRow) setFocusRow(i);\n }}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n onRowClick?.(row.original);\n }}\n onKeyDown={(e) => onRowKeyDown(e, row, i)}\n style={{ ...gridStyle, ...style }}\n className={cn(\n \"group/tr grid w-full text-body text-fg transition-control focus-ring-inset\",\n !inset && \"rounded-item\",\n KAESO_DATA_TABLE_VARIANTS.density[density].classes,\n onRowClick && \"cursor-pointer\",\n \"hover:bg-fill-1 aria-selected:bg-fill-2 data-active:bg-fill-2 data-fresh:animate-row-fresh\",\n \"hover:controls-on-fill aria-selected:controls-on-fill data-active:controls-on-fill\",\n )}\n >\n {cells.map((cell, i) => {\n const meta = cell.column.columnDef.meta;\n const content = flexRender(cell.column.columnDef.cell, cell.getContext());\n const raw = cell.getValue();\n const text = meta?.text ? meta.text(row.original) : typeof raw === \"string\" ? raw : undefined;\n const tone = meta?.tone?.(row.original);\n return (\n <div\n key={cell.id}\n role=\"cell\"\n className={cn(\n cellPad(i),\n meta?.align === \"end\" && \"justify-end text-right tabular\",\n meta?.mono && \"mono text-small\",\n tone && STATUS_TONE_TEXT[tone],\n stickyCol(i),\n )}\n >\n {text !== undefined && typeof content !== \"object\" ? (\n <Text truncate tone={tone ?? \"default\"} className={cn(\"min-w-0\", meta?.mono && \"text-small\")} mono={!!meta?.mono}>\n {text}\n </Text>\n ) : (\n <span className={cn(\"min-w-0 truncate cell-fit\", meta?.grow && \"flex-1\")}>{content}</span>\n )}\n </div>\n );\n })}\n </div>\n );\n if (!rowMenu) return <div key={row.id}>{el}</div>;\n return (\n <ContextMenu key={row.id}>\n <ContextMenu.Trigger>{el}</ContextMenu.Trigger>\n <ContextMenu.Content>{rowMenu(row.original)}</ContextMenu.Content>\n </ContextMenu>\n );\n };\n\n return (\n <div\n ref={(e) => {\n root.current = e;\n if (typeof ref === \"function\") ref(e);\n else if (ref) (ref as { current: HTMLDivElement | null }).current = e;\n }}\n className={cn(\"relative w-full min-w-0\", !inset && !padded && \"px-24\", className)}\n >\n <div\n role=\"table\"\n aria-label={ariaLabel}\n aria-rowcount={rows.length + 1}\n aria-busy={loading || undefined}\n className={cn(\"w-full overflow-clip\", inset && \"rounded-group bg-raised shadow-xs\")}\n >\n <div\n ref={head}\n role=\"rowgroup\"\n className={cn(\"sticky top-0 z-20 overflow-hidden\", inset ? \"bg-raised\" : \"bg-panel\")}\n onScroll={(e) => {\n if (body.current && body.current.scrollLeft !== e.currentTarget.scrollLeft) body.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {table.getHeaderGroups().map((hg) => (\n <div key={hg.id} role=\"row\" aria-rowindex={1} className=\"grid h-36 hairline-b-strong\" style={gridStyle}>\n {hg.headers\n .filter((h) => !hidden.has(h.column.id))\n .map((h, i) => {\n const meta = h.column.columnDef.meta;\n const sortable = h.column.getCanSort();\n const dir = h.column.getIsSorted();\n return (\n <div\n key={h.id}\n role=\"columnheader\"\n aria-sort={dir === \"asc\" ? \"ascending\" : dir === \"desc\" ? \"descending\" : sortable ? \"none\" : undefined}\n className={cn(\n \"group/th relative\",\n cellPad(i),\n meta?.align === \"end\" && \"justify-end\",\n stickyCol(i, true),\n stickyCol(i, true) && \"hairline-b-strong\",\n )}\n >\n {sortable ? (\n <button\n type=\"button\"\n onClick={h.column.getToggleSortingHandler()}\n className={cn(\n \"relative -mx-6 inline-flex h-28 min-w-0 cursor-pointer items-center gap-4 rounded-pill px-6 text-caption font-medium transition-control hover:bg-fill-1 hover:text-fg focus-ring tap-target\",\n dir ? \"text-fg\" : \"text-fg-secondary\",\n meta?.align === \"end\" && \"flex-row-reverse\",\n )}\n >\n <span className=\"truncate\">{flexRender(h.column.columnDef.header, h.getContext())}</span>\n <Icon\n icon={dir === \"desc\" ? __icon_ArrowDown01Icon : __icon_ArrowUp01Icon}\n size=\"xs\"\n className={cn(\"shrink-0 transition-control\", dir ? \"opacity-100\" : \"opacity-0 group-hover/th:opacity-60\")}\n />\n </button>\n ) : (\n <span className=\"truncate text-caption font-medium text-fg-secondary\">{flexRender(h.column.columnDef.header, h.getContext())}</span>\n )}\n {h.column.getCanResize() && (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label={t(\"dataTable.resizeColumn\", \"Resize column\")}\n aria-valuenow={h.column.getSize()}\n aria-valuemin={h.column.columnDef.minSize ?? 64}\n aria-valuemax={h.column.columnDef.maxSize ?? 640}\n tabIndex={0}\n onKeyDown={(e) => {\n const step = { ArrowLeft: -16, ArrowRight: 16 }[e.key];\n if (step === undefined) return;\n e.preventDefault();\n const id = h.column.id;\n const min = h.column.columnDef.minSize ?? 64;\n const max = h.column.columnDef.maxSize ?? 640;\n table.setColumnSizing((old) => ({ ...old, [id]: Math.max(min, Math.min(max, h.column.getSize() + step)) }));\n }}\n onMouseDown={h.getResizeHandler()}\n onTouchStart={h.getResizeHandler()}\n onDoubleClick={() => h.column.resetSize()}\n className=\"absolute top-8 right-0 bottom-8 w-8 cursor-col-resize rounded-pill after:absolute after:inset-y-0 after:right-0 after:w-1 after:bg-transparent after:transition-control group-hover/th:after:bg-line-strong focus-ring-inset\"\n />\n )}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div\n ref={body}\n role=\"rowgroup\"\n className=\"overflow-x-auto scrollbar-quiet\"\n onScroll={(e) => {\n if (head.current && head.current.scrollLeft !== e.currentTarget.scrollLeft) head.current.scrollLeft = e.currentTarget.scrollLeft;\n }}\n >\n {error ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n <div role=\"alert\">\n <Empty\n size=\"compact\"\n title={t(\"dataTable.loadFailed\", \"Couldn't load these rows\")}\n actions={\n onRetry && (\n <Button size=\"sm\" onClick={onRetry}>\n {t(\"dataTable.tryAgain\", \"Try again\")}\n </Button>\n )\n }\n />\n </div>\n </div>\n </div>\n ) : loading && rows.length === 0 ? (\n Array.from({ length: 8 }, (_, r) => (\n <div key={r} role=\"row\" className={cn(\"grid\", KAESO_DATA_TABLE_VARIANTS.density[density].classes)} style={gridStyle}>\n {cols.map((c, i) => (\n <div key={c.id} role=\"cell\" className={cn(cellPad(i), c.columnDef.meta?.align === \"end\" && \"justify-end\")}>\n <Skeleton shape=\"line\" style={{ width: `${40 + ((r * 7 + i * 13) % 45)}%` }} />\n </div>\n ))}\n </div>\n ))\n ) : rows.length === 0 ? (\n <div role=\"row\">\n <div role=\"cell\" aria-colspan={cols.length} className=\"block\">\n {empty ?? (\n <Empty size=\"compact\" title={t(\"dataTable.noRows\", \"No rows\")} description={t(\"dataTable.noMatches\", \"Nothing matches these filters.\")} />\n )}\n </div>\n </div>\n ) : virtual ? (\n <div className=\"relative\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualizer.getVirtualItems().map((v) =>\n renderRow(rows[v.index]!, v.index, {\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: `translateY(${Math.round(v.start - scrollMargin)}px)`,\n }),\n )}\n </div>\n ) : (\n rows.map((r, i) => renderRow(r, i))\n )}\n </div>\n </div>\n {hasMore && <Pagination variant=\"load-more\" hasMore loading={loadingMore} onLoadMore={onLoadMore} />}\n </div>\n );\n}\n\nconst DataTableBase = /* @__PURE__ */ forwardRef(DataTableInner);\nif (process.env.NODE_ENV !== \"production\") DataTableBase.displayName = \"DataTable\";\nexport const DataTable = DataTableBase as unknown as <T>(\n p: DataTableProps<T> & { ref?: React.Ref<HTMLDivElement> | undefined },\n) => ReturnType<typeof DataTableInner>;\n","import type { ColumnDef } from \"@tanstack/react-table\";\nimport type { ReactNode } from \"react\";\nimport { formatDate, formatDuration, formatRelative, formatTokens, formatUSD, formatNumber } from \"../../format/index.js\";\nimport { StatusDot, type StatusDotProps } from \"../status-dot/status-dot.js\";\nimport { Avatar } from \"../avatar/avatar.js\";\nimport { Tooltip } from \"../tooltip/tooltip.js\";\nimport type { StatusTone } from \"../../utils/tone.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\ntype Base<T = never> = {\n id: string;\n header: ReactNode;\n size?: number | undefined;\n priority?: number | undefined;\n grow?: boolean | undefined;\n minWidth?: number | undefined;\n tone?: ((row: T) => StatusTone | undefined) | undefined;\n};\ntype Accessor<T, V> = (row: T) => V;\n\nfunction make<T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: object = {},\n sortingFn?: ColumnDef<T, V>[\"sortingFn\"],\n): ColumnDef<T, V> {\n return {\n id: b.id,\n header: () => b.header,\n accessorFn: get,\n cell: (ctx) => cell(ctx.getValue() as V, ctx.row.original),\n ...(b.size ? { size: b.size } : {}),\n ...(sortingFn ? { sortingFn } : {}),\n meta: {\n ...(b.priority !== undefined ? { priority: b.priority } : {}),\n ...(b.grow ? { grow: true } : {}),\n ...(b.minWidth !== undefined ? { minWidth: b.minWidth } : {}),\n ...(b.tone ? { tone: b.tone } : {}),\n ...meta,\n },\n };\n}\n\nfunction Tokens({ value }: { value: number }) {\n const t = useUiText();\n const exact = t(\"dataTable.tokenCount\", \"{count} tokens\", { count: formatNumber(value) });\n return (\n <Tooltip content={exact}>\n <span>\n <span aria-hidden>{formatTokens(value)}</span>\n <span className=\"sr-only\">{exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nfunction RelativeTime({ value, now }: { value: string | Date; now: Date | number }) {\n const exact = formatDate(value, { time: true, seconds: true });\n return (\n <Tooltip content={`${exact} · ${formatDate(value, { time: true, utc: true })}`} shape=\"multiline\">\n <span className=\"text-fg-secondary\">\n <time dateTime={new Date(value).toISOString()}>{formatRelative(value, now)}</time>\n <span className=\"sr-only\"> {exact}</span>\n </span>\n </Tooltip>\n );\n}\n\nexport const col = {\n text: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { text: (r: T) => get(r) }),\n mono: <T,>(b: Base<T>, get: Accessor<T, string>) => make(b, get, (v) => v, { mono: true, text: (r: T) => get(r) }),\n number: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatNumber(v), { align: \"end\" }),\n money: <T,>(b: Base<T>, get: Accessor<T, string>, options: { decimals?: number | undefined } = {}) =>\n make(\n b,\n get,\n (v) => formatUSD(v, options.decimals === undefined ? {} : { decimals: options.decimals }),\n { align: \"end\", mono: false },\n (a, c, id) => Number(a.getValue(id)) - Number(c.getValue(id)),\n ),\n tokens: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => <Tokens value={v} />, { align: \"end\" }),\n duration: <T,>(b: Base<T>, get: Accessor<T, number>) => make(b, get, (v) => formatDuration(v), { align: \"end\" }),\n date: <T,>(b: Base<T>, get: Accessor<T, string | Date>) =>\n make(b, get, (v) => <time dateTime={new Date(v).toISOString()}>{formatDate(v, { time: true })}</time>, {}, \"datetime\"),\n relative: <T,>(b: Base<T>, get: Accessor<T, string | Date>, options: { now?: Date | number | undefined } = {}) =>\n make(\n b,\n get,\n (v) => <RelativeTime value={v} now={options.now ?? Date.now()} />,\n {},\n (a, c, id) => new Date(a.getValue(id) as string).getTime() - new Date(c.getValue(id) as string).getTime(),\n ),\n status: <T,>(b: Base<T>, get: Accessor<T, { tone: NonNullable<StatusDotProps[\"tone\"]>; label: string }>) =>\n make(b, get, (v) => <StatusDot tone={v.tone}>{v.label}</StatusDot>, { text: undefined }),\n avatar: <T,>(b: Base<T>, get: Accessor<T, { name: string; src?: string | undefined }>) =>\n make(b, get, (v) => (\n <span className=\"inline-flex min-w-0 items-center gap-8\">\n <Avatar name={v.name} {...(v.src ? { src: v.src } : {})} size={24} decorative />\n <span className=\"truncate\">{v.name}</span>\n </span>\n )),\n custom: <T, V>(\n b: Base<T>,\n get: Accessor<T, V>,\n cell: (v: V, row: T) => ReactNode,\n meta: { align?: \"start\" | \"end\" | undefined; mono?: boolean | undefined } = {},\n ) => make(b, get, cell, meta),\n};\n"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-DUDmdLpZ.js";
2
+ import { t as e } from "../chunks/cn-Dj6sRgkF.js";
3
3
  import { t } from "../chunks/use-controllable-B5Fd12Bx.js";
4
4
  import { i as n, n as r } from "../chunks/context-BELWW79w.js";
5
5
  import { formatDate as i, formatDateRange as a } from "../format.js";
6
- import { t as o } from "../chunks/icon-BqujXDUc.js";
7
- import { c as s, s as c } from "../chunks/tooltip-CTBnfiDH.js";
8
- import { a as l, o as u, s as d } from "../chunks/field-BZriODU7.js";
9
- import { i as f, n as p } from "../chunks/input-group-BoxjnN8I.js";
6
+ import { t as o } from "../chunks/icon-D7ja-_Yk.js";
7
+ import { c as s, s as c } from "../chunks/tooltip-BMQ9BtPp.js";
8
+ import { a as l, o as u, s as d } from "../chunks/field-TviMvYa2.js";
9
+ import { i as f, n as p } from "../chunks/input-group-CUSNsQjQ.js";
10
10
  import { n as m, r as h } from "../chunks/popover-root-D3q89WNF.js";
11
11
  import { r as g, t as _ } from "../chunks/hidden-description-B2zSmLcn.js";
12
12
  import { t as v } from "../chunks/when-idle-Cy3pinqO.js";
@@ -18,7 +18,7 @@ var M = { size: {
18
18
  sm: { classes: "h-32 pl-10 pr-12 gap-6 text-body" },
19
19
  md: { classes: "h-36 pl-14 pr-16 gap-8 text-body" },
20
20
  lg: { classes: "h-40 pl-16 pr-18 gap-8 text-body" }
21
- } }, N = { size: "md" }, P = /* @__PURE__ */ c(() => import("../chunks/date-popup-BJPA_fBm.js"), { base: () => import.meta.url }), F = /* @__PURE__ */ c(() => import("../chunks/range-popup-ZunS8QSH.js"), { base: () => import.meta.url }), I = () => s(P), L = () => s(F);
21
+ } }, N = { size: "md" }, P = /* @__PURE__ */ c(() => import("../chunks/date-popup-RQkqhko4.js"), { base: () => import.meta.url }), F = /* @__PURE__ */ c(() => import("../chunks/range-popup-CkhsK3wI.js"), { base: () => import.meta.url }), I = () => s(P), L = () => s(F);
22
22
  function R(e) {
23
23
  let [t, n] = E(!1), [, r] = w((e) => e + 1, 0), i = !!e.current(), a = t && !i;
24
24
  x(() => {
@@ -75,7 +75,7 @@ var z = /* @__PURE__ */ y(function({ size: t, children: n, placeholder: r, inval
75
75
  ...s ? { id: s } : {},
76
76
  ...i ? { "aria-invalid": !0 } : {},
77
77
  ...l ? { "data-force": l } : {},
78
- className: e("inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-secondary transition-control focus-ring disabled:cursor-not-allowed", M.size[t].classes, i && "ring-invalid", y),
78
+ className: e("inline-flex min-w-0 cursor-pointer items-center rounded-pill font-medium whitespace-nowrap material-selector transition-control disabled:cursor-not-allowed", M.size[t].classes, y),
79
79
  children: [/* @__PURE__ */ O(o, {
80
80
  icon: A,
81
81
  size: "sm",