@logicplanes/kaeso-ui 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/LICENSE +1 -1
- package/ai/component-guides.md +269 -7
- package/ai/component-registry.json +600 -800
- package/ai/component-registry.md +200 -141
- package/ai/icons.md +2 -2
- package/ai/tokens.md +1 -1
- package/dist/blocks/delete-resource.js +1 -1
- package/dist/blocks/pages.js +3 -3
- package/dist/blocks/resource-list.js +2 -2
- package/dist/chunks/app-frame-BXh-06HL.js +214 -0
- package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
- package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
- package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
- package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
- package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
- package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
- package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
- package/dist/chunks/code-BADhvsgC.js +33 -0
- package/dist/chunks/code-BADhvsgC.js.map +1 -0
- package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
- package/dist/chunks/code-block-DxtladFW.js.map +1 -0
- package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
- package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
- package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
- package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
- package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
- package/dist/chunks/core-K960A4OT.js.map +1 -0
- package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
- package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
- package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
- package/dist/chunks/de-CTAo4KL7.js.map +1 -0
- package/dist/chunks/dialog-LNKgPEsV.js +319 -0
- package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
- package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
- package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
- package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
- package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
- package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
- package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
- package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
- package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
- package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
- package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
- package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
- package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
- package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
- package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
- package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
- package/dist/chunks/link-vz9aV8WX.js.map +1 -0
- package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
- package/dist/chunks/list-CzaiyNja.js.map +1 -0
- package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
- package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
- package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
- package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
- package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
- package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
- package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
- package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
- package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
- package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
- package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
- package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
- package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
- package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
- package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
- package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
- package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
- package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
- package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
- package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
- package/dist/chunks/section-DzOLLN1p.js.map +1 -0
- package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
- package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
- package/dist/chunks/select-Bc4kRiSG.js +227 -0
- package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
- package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
- package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
- package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
- package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
- package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
- package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
- package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
- package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
- package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
- package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
- package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
- package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
- package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
- package/dist/chunks/tooltip-DEbCCsru.js +151 -0
- package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
- package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
- package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
- package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
- package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
- package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
- package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
- package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
- package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
- package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
- package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
- package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
- package/dist/components/app-frame.js +3 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/button-group.js +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/charts/bar.js +78 -77
- package/dist/components/charts/bar.js.map +1 -1
- package/dist/components/charts/donut.js +2 -2
- package/dist/components/charts/gauge.js +1 -1
- package/dist/components/charts/sankey.js +1 -1
- package/dist/components/charts/timeseries.js +75 -75
- package/dist/components/charts/timeseries.js.map +1 -1
- package/dist/components/charts.js +1 -1
- package/dist/components/code-block.js +1 -1
- package/dist/components/code.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +105 -97
- package/dist/components/command-palette.js.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/data-table.js +94 -95
- package/dist/components/data-table.js.map +1 -1
- package/dist/components/date-picker.js +3 -3
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/dialog.js +141 -153
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/display-options.js +5 -5
- package/dist/components/filter-chip.js +1 -1
- package/dist/components/flow.js +37 -36
- package/dist/components/flow.js.map +1 -1
- package/dist/components/icon-button.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/input.js +5 -5
- package/dist/components/kaeso/conversation.js +2 -2
- package/dist/components/kaeso/identity.js +1 -1
- package/dist/components/kaeso/moments.js +3 -3
- package/dist/components/kaeso/rights.js +1 -1
- package/dist/components/kaeso/usage.js +1 -1
- package/dist/components/kaeso.js +4 -4
- package/dist/components/key-value.js +3 -3
- package/dist/components/link.js +1 -1
- package/dist/components/list.js +1 -1
- package/dist/components/logo.js +101 -1
- package/dist/components/logo.js.map +1 -0
- package/dist/components/markdown.js +1 -1
- package/dist/components/menu.js +1 -1
- package/dist/components/page-header.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/playground.js +8 -8
- package/dist/components/scroll-area.js +30 -23
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/section.js +1 -1
- package/dist/components/segmented.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sheet.js +46 -41
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/stat.js +75 -76
- package/dist/components/stat.js.map +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-image.js +38 -0
- package/dist/components/theme-image.js.map +1 -0
- package/dist/components/theme-menu.js +3 -3
- package/dist/components/theme-select.js +58 -0
- package/dist/components/theme-select.js.map +1 -0
- package/dist/components/toast.js +91 -92
- package/dist/components/toast.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/i18n-provider.js +1 -1
- package/dist/index.js +76 -74
- package/dist/kaeso.css +39 -16
- package/dist/styles.css +1 -1
- package/dist/theme.js +1 -1
- package/dist/types/components/app-frame/app-frame.d.ts +2 -10
- package/dist/types/components/app-frame/docs.d.ts +1 -0
- package/dist/types/components/app-frame/index.d.ts +1 -0
- package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
- package/dist/types/components/charts/linear-scale.d.ts +17 -0
- package/dist/types/components/code/code.d.ts +16 -0
- package/dist/types/components/code/docs.d.ts +1 -0
- package/dist/types/components/code-block/code-block.d.ts +2 -0
- package/dist/types/components/code-block/docs.d.ts +4 -0
- package/dist/types/components/command-palette/command-palette.d.ts +1 -0
- package/dist/types/components/command-palette/docs.d.ts +1 -0
- package/dist/types/components/dialog/dialog.d.ts +5 -2
- package/dist/types/components/dialog/docs.d.ts +10 -0
- package/dist/types/components/dialog/index.d.ts +1 -0
- package/dist/types/components/dialog/scope.d.ts +9 -0
- package/dist/types/components/dialog/step-dialog.d.ts +9 -1
- package/dist/types/components/link/link.d.ts +8 -0
- package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
- package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
- package/dist/types/components/theme-image/docs.d.ts +13 -0
- package/dist/types/components/theme-image/index.d.ts +1 -0
- package/dist/types/components/theme-image/theme-image.d.ts +23 -0
- package/dist/types/components/theme-select/docs.d.ts +10 -0
- package/dist/types/components/theme-select/index.d.ts +1 -0
- package/dist/types/components/theme-select/theme-select.d.ts +34 -0
- package/dist/types/icons/groups.d.ts +1 -1
- package/dist/types/icons/vocabulary.d.ts +5 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/theme/theme-provider.d.ts +1 -1
- package/dist/types/utils/dialog-scope.d.ts +7 -0
- package/dist/types/utils/lazy-module.d.ts +7 -2
- package/dist/types/utils/observe-resize.d.ts +1 -0
- package/dist/types/utils/resize-motion.d.ts +2 -0
- package/foundations/motion.md +1 -0
- package/package.json +2 -2
- package/dist/chunks/app-frame-BBIMch8X.js +0 -224
- package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
- package/dist/chunks/code-DDyOlIFO.js +0 -23
- package/dist/chunks/code-DDyOlIFO.js.map +0 -1
- package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
- package/dist/chunks/core-Bgefcs3z.js.map +0 -1
- package/dist/chunks/de-BCg1eRVd.js.map +0 -1
- package/dist/chunks/dialog-CVqSVk3T.js +0 -283
- package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
- package/dist/chunks/icon-Bha63LaN.js.map +0 -1
- package/dist/chunks/link-tTapNTpM.js.map +0 -1
- package/dist/chunks/list-CN8pO8lv.js.map +0 -1
- package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
- package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
- package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
- package/dist/chunks/section-XStLtXKa.js.map +0 -1
- package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
- package/dist/chunks/select-Ca3HGsN1.js +0 -223
- package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
- package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
- package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
- package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
- package/dist/chunks/tooltip-CDu00nzg.js +0 -124
- package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
- package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
- package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
- package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
- package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
- package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
- package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
- package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
|
@@ -4,30 +4,31 @@ import { n as t } from "../chunks/inset-BLMdxX4I.js";
|
|
|
4
4
|
import { i as n } from "../chunks/context-BELWW79w.js";
|
|
5
5
|
import { formatDate as r, formatDuration as i, formatNumber as a, formatRelative as o, formatTokens as s, formatUSD as c } from "../format.js";
|
|
6
6
|
import { t as ee } from "../chunks/icon-CeNQtobn.js";
|
|
7
|
-
import { r as l } from "../chunks/tooltip-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { n as re } from "../chunks/
|
|
11
|
-
import {
|
|
7
|
+
import { r as l } from "../chunks/tooltip-DEbCCsru.js";
|
|
8
|
+
import { t as te } from "../chunks/observe-resize-DhxhmoyB.js";
|
|
9
|
+
import { r as ne } from "../chunks/text--5MKh2G4.js";
|
|
10
|
+
import { n as re } from "../chunks/button-DQvoOxVQ.js";
|
|
11
|
+
import { n as u } from "../chunks/checkbox-BgRdbfCE.js";
|
|
12
|
+
import { t as d } from "../chunks/menu-DyVPwgfF.js";
|
|
12
13
|
import { r as ie } from "../chunks/skeleton-kfuqdl1a.js";
|
|
13
|
-
import { r as ae } from "../chunks/pagination-
|
|
14
|
-
import { t as
|
|
14
|
+
import { r as ae } from "../chunks/pagination-CCMxQ5pH.js";
|
|
15
|
+
import { t as oe } from "../chunks/empty-DIbBpytW.js";
|
|
15
16
|
import { i as f } from "../chunks/status-dot-CBoQpyL4.js";
|
|
16
17
|
import { t as p } from "../chunks/avatar-D2nJNbtC.js";
|
|
17
|
-
import { t as
|
|
18
|
-
import { t as
|
|
19
|
-
import { t as
|
|
18
|
+
import { t as se } from "../chunks/scroll-parent-WXvzQcUo.js";
|
|
19
|
+
import { t as ce } from "../chunks/tone-CWpsHPb6.js";
|
|
20
|
+
import { t as le } from "../chunks/use-scroll-margin-DfdTc_5D.js";
|
|
20
21
|
import { forwardRef as m, useLayoutEffect as h, useMemo as g, useRef as _, useState as v } from "react";
|
|
21
22
|
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
22
|
-
import { ArrowDown01Icon as
|
|
23
|
-
import { flexRender as x, getCoreRowModel as
|
|
24
|
-
import { useVirtualizer as
|
|
23
|
+
import { ArrowDown01Icon as ue, ArrowUp01Icon as de } from "@hugeicons/core-free-icons";
|
|
24
|
+
import { flexRender as x, getCoreRowModel as fe, getSortedRowModel as pe, useReactTable as me } from "@tanstack/react-table";
|
|
25
|
+
import { useVirtualizer as he } from "@tanstack/react-virtual";
|
|
25
26
|
//#region src/components/data-table/data-table.tsx
|
|
26
27
|
var S = { density: {
|
|
27
28
|
compact: { classes: "h-36" },
|
|
28
29
|
default: { classes: "h-40" },
|
|
29
30
|
comfortable: { classes: "h-48" }
|
|
30
|
-
} }, C = { density: "default" },
|
|
31
|
+
} }, C = { density: "default" }, ge = {
|
|
31
32
|
compact: 36,
|
|
32
33
|
default: 40,
|
|
33
34
|
comfortable: 48
|
|
@@ -55,45 +56,45 @@ function T(e, t) {
|
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
var E = (e) => Math.min(e.size, e.minWidth ?? 136);
|
|
58
|
-
function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClick: s, rowMenu: c, selectable: l, selection: f, onSelectionChange: p, sorting: m, onSortingChange: C, manualSorting: w, loading: D, error: O, onRetry: k, empty: A, hasMore:
|
|
59
|
-
let
|
|
59
|
+
function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClick: s, rowMenu: c, selectable: l, selection: f, onSelectionChange: p, sorting: m, onSortingChange: C, manualSorting: w, loading: D, error: O, onRetry: k, empty: A, hasMore: j, loadingMore: M, onLoadMore: N, stickyFirstColumn: _e, virtualizeAbove: ve = 100, className: ye, activeRowId: be, freshRowIds: xe, "aria-label": Se }, P) {
|
|
60
|
+
let F = t(), I = n(), [Ce, we] = v([]), [Te, Ee] = v({}), L = m ?? Ce, R = f ?? Te, De = g(() => l ? [{
|
|
60
61
|
id: "__select",
|
|
61
62
|
size: 44,
|
|
62
63
|
enableSorting: !1,
|
|
63
64
|
enableResizing: !1,
|
|
64
65
|
meta: { priority: 1 },
|
|
65
|
-
header: ({ table: e }) => /* @__PURE__ */ y(
|
|
66
|
-
"aria-label":
|
|
66
|
+
header: ({ table: e }) => /* @__PURE__ */ y(u, {
|
|
67
|
+
"aria-label": I("dataTable.selectAllRows", "Select all rows"),
|
|
67
68
|
checked: e.getIsAllRowsSelected(),
|
|
68
69
|
indeterminate: e.getIsSomeRowsSelected(),
|
|
69
70
|
onCheckedChange: (t) => e.toggleAllRowsSelected(t)
|
|
70
71
|
}),
|
|
71
|
-
cell: ({ row: e }) => /* @__PURE__ */ y(
|
|
72
|
-
"aria-label":
|
|
72
|
+
cell: ({ row: e }) => /* @__PURE__ */ y(u, {
|
|
73
|
+
"aria-label": I("dataTable.selectRow", "Select row"),
|
|
73
74
|
checked: e.getIsSelected(),
|
|
74
75
|
onCheckedChange: (t) => e.toggleSelected(t)
|
|
75
76
|
})
|
|
76
77
|
}, ...i] : i, [
|
|
77
78
|
i,
|
|
78
79
|
l,
|
|
79
|
-
|
|
80
|
-
]),
|
|
80
|
+
I
|
|
81
|
+
]), z = me({
|
|
81
82
|
data: r,
|
|
82
|
-
columns:
|
|
83
|
+
columns: De,
|
|
83
84
|
state: {
|
|
84
|
-
sorting:
|
|
85
|
-
rowSelection:
|
|
85
|
+
sorting: L,
|
|
86
|
+
rowSelection: R
|
|
86
87
|
},
|
|
87
88
|
onSortingChange: (e) => {
|
|
88
|
-
let t = typeof e == "function" ? e(
|
|
89
|
-
m ||
|
|
89
|
+
let t = typeof e == "function" ? e(L) : e;
|
|
90
|
+
m || we(t), C?.(t);
|
|
90
91
|
},
|
|
91
92
|
onRowSelectionChange: (e) => {
|
|
92
|
-
let t = typeof e == "function" ? e(
|
|
93
|
-
f ||
|
|
93
|
+
let t = typeof e == "function" ? e(R) : e;
|
|
94
|
+
f || Ee(t), p?.(t);
|
|
94
95
|
},
|
|
95
|
-
getCoreRowModel:
|
|
96
|
-
getSortedRowModel:
|
|
96
|
+
getCoreRowModel: fe(),
|
|
97
|
+
getSortedRowModel: pe(),
|
|
97
98
|
manualSorting: !!w,
|
|
98
99
|
enableRowSelection: !!l,
|
|
99
100
|
columnResizeMode: "onChange",
|
|
@@ -103,46 +104,44 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
103
104
|
minSize: 64,
|
|
104
105
|
maxSize: 640
|
|
105
106
|
}
|
|
106
|
-
}),
|
|
107
|
+
}), B = _(null), V = _(null), H = _(null), U = z.getVisibleLeafColumns(), W = U.map((e) => ({
|
|
107
108
|
id: e.id,
|
|
108
109
|
size: e.getSize(),
|
|
109
110
|
priority: e.columnDef.meta?.priority ?? 2,
|
|
110
111
|
grow: !!e.columnDef.meta?.grow,
|
|
111
112
|
minWidth: e.columnDef.meta?.minWidth,
|
|
112
113
|
fixed: e.id === "__select"
|
|
113
|
-
})),
|
|
114
|
-
let t = T(
|
|
114
|
+
})), Oe = JSON.stringify(W), G = (e) => {
|
|
115
|
+
let t = T(W, e);
|
|
115
116
|
return `${t.tight ? "!" : ""}${t.overflow ? ">" : ""}|${t.hidden.join(" ")}`;
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
let [
|
|
117
|
+
}, K = _(G);
|
|
118
|
+
K.current = G;
|
|
119
|
+
let [ke, q] = v("|");
|
|
119
120
|
h(() => {
|
|
120
|
-
let e =
|
|
121
|
-
if (
|
|
122
|
-
let t = new ResizeObserver(([e]) => W(U.current(Math.round(e?.contentRect.width ?? 0))));
|
|
123
|
-
return t.observe(e), () => t.disconnect();
|
|
121
|
+
let e = B.current;
|
|
122
|
+
if (e) return te([e], ([e]) => q(K.current(Math.round(e?.contentRect.width ?? 0))));
|
|
124
123
|
}, []), h(() => {
|
|
125
|
-
|
|
126
|
-
}, [
|
|
127
|
-
let [
|
|
124
|
+
B.current && q(K.current(Math.round(B.current.getBoundingClientRect().width)));
|
|
125
|
+
}, [Oe]);
|
|
126
|
+
let [Ae = "", je = ""] = ke.split("|"), Me = Ae.includes("!"), Ne = Ae.includes(">"), J = g(() => new Set(je.split(" ").filter(Boolean)), [je]), Y = U.filter((e) => !J.has(e.id)), Pe = (e) => e.columnDef.meta?.grow && Me ? E({
|
|
128
127
|
size: e.getSize(),
|
|
129
128
|
minWidth: e.columnDef.meta.minWidth
|
|
130
129
|
}) : e.getSize(), X = {
|
|
131
|
-
gridTemplateColumns:
|
|
132
|
-
minWidth:
|
|
133
|
-
},
|
|
130
|
+
gridTemplateColumns: Y.map((e) => e.columnDef.meta?.grow ? `minmax(${Pe(e)}px, 1fr)` : `${e.getSize()}px`).join(" "),
|
|
131
|
+
minWidth: Y.reduce((e, t) => e + Pe(t), 0)
|
|
132
|
+
}, Fe = Ne && Y.length > 1 && !Y[Y.length - 1]?.columnDef.meta?.grow, Z = z.getRowModel().rows, Ie = Z.length > ve, Le = () => se(B.current), Re = le(H, Le, Z.length), ze = he({
|
|
134
133
|
count: Z.length,
|
|
135
|
-
getScrollElement:
|
|
136
|
-
estimateSize: () =>
|
|
134
|
+
getScrollElement: Le,
|
|
135
|
+
estimateSize: () => ge[o],
|
|
137
136
|
overscan: 16,
|
|
138
|
-
enabled:
|
|
139
|
-
scrollMargin:
|
|
140
|
-
}), Q = (t) => e("flex min-w-0 items-center px-12", t === 0 && (
|
|
141
|
-
let r = t.getVisibleCells().filter((e) => !
|
|
137
|
+
enabled: Ie,
|
|
138
|
+
scrollMargin: Re
|
|
139
|
+
}), Q = (t) => e("flex min-w-0 items-center px-12", t === 0 && (F ? "pl-16" : "pl-24"), t === Y.length - 1 && (F ? "pr-16" : "pr-24")), $ = (t) => (_e && t === 0 || Fe && t === Y.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", F ? "bg-raised" : "bg-panel"), Be = (t, n) => {
|
|
140
|
+
let r = t.getVisibleCells().filter((e) => !J.has(e.column.id)), i = /* @__PURE__ */ y("div", {
|
|
142
141
|
role: "row",
|
|
143
142
|
"aria-selected": l ? t.getIsSelected() : void 0,
|
|
144
|
-
"data-active": t.id ===
|
|
145
|
-
"data-fresh":
|
|
143
|
+
"data-active": t.id === be || void 0,
|
|
144
|
+
"data-fresh": xe?.has(t.id) || void 0,
|
|
146
145
|
tabIndex: s ? 0 : void 0,
|
|
147
146
|
onClick: (e) => {
|
|
148
147
|
e.target.closest("button, a, [role=checkbox]") || s?.(t.original);
|
|
@@ -159,8 +158,8 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
159
158
|
let i = n.column.columnDef.meta, a = x(n.column.columnDef.cell, n.getContext()), o = n.getValue(), s = i?.text ? i.text(t.original) : typeof o == "string" ? o : void 0, c = i?.tone?.(t.original);
|
|
160
159
|
return /* @__PURE__ */ y("div", {
|
|
161
160
|
role: "cell",
|
|
162
|
-
className: e(Q(r), i?.align === "end" && "justify-end text-right tabular", i?.mono && "mono text-small", c &&
|
|
163
|
-
children: s !== void 0 && typeof a != "object" ? /* @__PURE__ */ y(
|
|
161
|
+
className: e(Q(r), i?.align === "end" && "justify-end text-right tabular", i?.mono && "mono text-small", c && ce[c], $(r)),
|
|
162
|
+
children: s !== void 0 && typeof a != "object" ? /* @__PURE__ */ y(ne, {
|
|
164
163
|
truncate: !0,
|
|
165
164
|
tone: c ?? "default",
|
|
166
165
|
className: e("min-w-0", i?.mono && "text-small"),
|
|
@@ -173,31 +172,31 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
173
172
|
}, n.id);
|
|
174
173
|
})
|
|
175
174
|
});
|
|
176
|
-
return c ? /* @__PURE__ */ b(
|
|
175
|
+
return c ? /* @__PURE__ */ b(d, { children: [/* @__PURE__ */ y(d.Trigger, { children: i }), /* @__PURE__ */ y(d.Content, { children: c(t.original) })] }, t.id) : /* @__PURE__ */ y("div", { children: i }, t.id);
|
|
177
176
|
};
|
|
178
177
|
return /* @__PURE__ */ b("div", {
|
|
179
178
|
ref: (e) => {
|
|
180
|
-
|
|
179
|
+
B.current = e, typeof P == "function" ? P(e) : P && (P.current = e);
|
|
181
180
|
},
|
|
182
|
-
className: e("relative w-full min-w-0",
|
|
181
|
+
className: e("relative w-full min-w-0", ye),
|
|
183
182
|
children: [/* @__PURE__ */ b("div", {
|
|
184
183
|
role: "table",
|
|
185
|
-
"aria-label":
|
|
184
|
+
"aria-label": Se,
|
|
186
185
|
"aria-rowcount": Z.length + 1,
|
|
187
186
|
"aria-busy": D || void 0,
|
|
188
|
-
className: e("w-full overflow-clip",
|
|
187
|
+
className: e("w-full overflow-clip", F && "rounded-group bg-raised shadow-xs"),
|
|
189
188
|
children: [/* @__PURE__ */ y("div", {
|
|
190
|
-
ref:
|
|
189
|
+
ref: V,
|
|
191
190
|
role: "rowgroup",
|
|
192
|
-
className: e("sticky top-0 z-20 overflow-hidden",
|
|
191
|
+
className: e("sticky top-0 z-20 overflow-hidden", F ? "bg-raised" : "bg-panel"),
|
|
193
192
|
onScroll: (e) => {
|
|
194
|
-
|
|
193
|
+
H.current && H.current.scrollLeft !== e.currentTarget.scrollLeft && (H.current.scrollLeft = e.currentTarget.scrollLeft);
|
|
195
194
|
},
|
|
196
|
-
children:
|
|
195
|
+
children: z.getHeaderGroups().map((t) => /* @__PURE__ */ y("div", {
|
|
197
196
|
role: "row",
|
|
198
197
|
className: "grid h-36 hairline-b-strong",
|
|
199
198
|
style: X,
|
|
200
|
-
children: t.headers.filter((e) => !
|
|
199
|
+
children: t.headers.filter((e) => !J.has(e.column.id)).map((t, n) => {
|
|
201
200
|
let r = t.column.columnDef.meta, i = t.column.getCanSort(), a = t.column.getIsSorted();
|
|
202
201
|
return /* @__PURE__ */ b("div", {
|
|
203
202
|
role: "columnheader",
|
|
@@ -211,7 +210,7 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
211
210
|
className: "truncate",
|
|
212
211
|
children: x(t.column.columnDef.header, t.getContext())
|
|
213
212
|
}), /* @__PURE__ */ y(ee, {
|
|
214
|
-
icon: a === "desc" ?
|
|
213
|
+
icon: a === "desc" ? ue : de,
|
|
215
214
|
size: "xs",
|
|
216
215
|
className: e("shrink-0 transition-control", a ? "opacity-100" : "opacity-0 group-hover/th:opacity-60")
|
|
217
216
|
})]
|
|
@@ -221,7 +220,7 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
221
220
|
}), t.column.getCanResize() && /* @__PURE__ */ y("div", {
|
|
222
221
|
role: "separator",
|
|
223
222
|
"aria-orientation": "vertical",
|
|
224
|
-
"aria-label":
|
|
223
|
+
"aria-label": I("dataTable.resizeColumn", "Resize column"),
|
|
225
224
|
onMouseDown: t.getResizeHandler(),
|
|
226
225
|
onTouchStart: t.getResizeHandler(),
|
|
227
226
|
onDoubleClick: () => t.column.resetSize(),
|
|
@@ -231,25 +230,25 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
231
230
|
})
|
|
232
231
|
}, t.id))
|
|
233
232
|
}), /* @__PURE__ */ y("div", {
|
|
234
|
-
ref:
|
|
233
|
+
ref: H,
|
|
235
234
|
role: "rowgroup",
|
|
236
235
|
className: "overflow-x-auto scrollbar-quiet",
|
|
237
236
|
onScroll: (e) => {
|
|
238
|
-
|
|
237
|
+
V.current && V.current.scrollLeft !== e.currentTarget.scrollLeft && (V.current.scrollLeft = e.currentTarget.scrollLeft);
|
|
239
238
|
},
|
|
240
239
|
children: O ? /* @__PURE__ */ y("div", {
|
|
241
240
|
role: "row",
|
|
242
241
|
children: /* @__PURE__ */ y("div", {
|
|
243
242
|
role: "cell",
|
|
244
|
-
"aria-colspan":
|
|
243
|
+
"aria-colspan": Y.length,
|
|
245
244
|
className: "block",
|
|
246
|
-
children: /* @__PURE__ */ y(
|
|
245
|
+
children: /* @__PURE__ */ y(oe, {
|
|
247
246
|
size: "compact",
|
|
248
|
-
title:
|
|
249
|
-
actions: k && /* @__PURE__ */ y(
|
|
247
|
+
title: I("dataTable.loadFailed", "Couldn't load these rows"),
|
|
248
|
+
actions: k && /* @__PURE__ */ y(re, {
|
|
250
249
|
size: "sm",
|
|
251
250
|
onClick: k,
|
|
252
|
-
children:
|
|
251
|
+
children: I("dataTable.tryAgain", "Try again")
|
|
253
252
|
})
|
|
254
253
|
})
|
|
255
254
|
})
|
|
@@ -257,7 +256,7 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
257
256
|
role: "row",
|
|
258
257
|
className: e("grid", S.density[o].classes),
|
|
259
258
|
style: X,
|
|
260
|
-
children:
|
|
259
|
+
children: Y.map((t, r) => /* @__PURE__ */ y("div", {
|
|
261
260
|
role: "cell",
|
|
262
261
|
className: e(Q(r), t.columnDef.meta?.align === "end" && "justify-end"),
|
|
263
262
|
children: /* @__PURE__ */ y(ie, {
|
|
@@ -269,30 +268,30 @@ function D({ data: r, columns: i, getRowId: a, density: o = "default", onRowClic
|
|
|
269
268
|
role: "row",
|
|
270
269
|
children: /* @__PURE__ */ y("div", {
|
|
271
270
|
role: "cell",
|
|
272
|
-
"aria-colspan":
|
|
271
|
+
"aria-colspan": Y.length,
|
|
273
272
|
className: "block",
|
|
274
|
-
children: A ?? /* @__PURE__ */ y(
|
|
273
|
+
children: A ?? /* @__PURE__ */ y(oe, {
|
|
275
274
|
size: "compact",
|
|
276
|
-
title:
|
|
277
|
-
description:
|
|
275
|
+
title: I("dataTable.noRows", "No rows"),
|
|
276
|
+
description: I("dataTable.noMatches", "Nothing matches these filters.")
|
|
278
277
|
})
|
|
279
278
|
})
|
|
280
|
-
}) :
|
|
279
|
+
}) : Ie ? /* @__PURE__ */ y("div", {
|
|
281
280
|
className: "relative",
|
|
282
|
-
style: { height:
|
|
283
|
-
children:
|
|
281
|
+
style: { height: ze.getTotalSize() },
|
|
282
|
+
children: ze.getVirtualItems().map((e) => Be(Z[e.index], {
|
|
284
283
|
position: "absolute",
|
|
285
284
|
top: 0,
|
|
286
285
|
left: 0,
|
|
287
|
-
transform: `translateY(${Math.round(e.start -
|
|
286
|
+
transform: `translateY(${Math.round(e.start - Re)}px)`
|
|
288
287
|
}))
|
|
289
|
-
}) : Z.map((e) =>
|
|
288
|
+
}) : Z.map((e) => Be(e))
|
|
290
289
|
})]
|
|
291
|
-
}),
|
|
290
|
+
}), j && /* @__PURE__ */ y(ae, {
|
|
292
291
|
variant: "load-more",
|
|
293
292
|
hasMore: !0,
|
|
294
|
-
loading:
|
|
295
|
-
onLoadMore:
|
|
293
|
+
loading: M,
|
|
294
|
+
onLoadMore: N
|
|
296
295
|
})]
|
|
297
296
|
});
|
|
298
297
|
}
|
|
@@ -318,7 +317,7 @@ function A(e, t, n, r = {}, i) {
|
|
|
318
317
|
}
|
|
319
318
|
};
|
|
320
319
|
}
|
|
321
|
-
function
|
|
320
|
+
function j({ value: e }) {
|
|
322
321
|
let t = n()("dataTable.tokenCount", "{count} tokens", { count: a(e) });
|
|
323
322
|
return /* @__PURE__ */ y(l, {
|
|
324
323
|
content: t,
|
|
@@ -331,7 +330,7 @@ function ge({ value: e }) {
|
|
|
331
330
|
})] })
|
|
332
331
|
});
|
|
333
332
|
}
|
|
334
|
-
function
|
|
333
|
+
function M({ value: e, now: t }) {
|
|
335
334
|
let n = r(e, {
|
|
336
335
|
time: !0,
|
|
337
336
|
seconds: !0
|
|
@@ -354,7 +353,7 @@ function _e({ value: e, now: t }) {
|
|
|
354
353
|
})
|
|
355
354
|
});
|
|
356
355
|
}
|
|
357
|
-
var
|
|
356
|
+
var N = {
|
|
358
357
|
text: (e, t) => A(e, t, (e) => e, { text: (e) => t(e) }),
|
|
359
358
|
mono: (e, t) => A(e, t, (e) => e, {
|
|
360
359
|
mono: !0,
|
|
@@ -365,13 +364,13 @@ var ve = {
|
|
|
365
364
|
align: "end",
|
|
366
365
|
mono: !1
|
|
367
366
|
}, (e, t, n) => Number(e.getValue(n)) - Number(t.getValue(n))),
|
|
368
|
-
tokens: (e, t) => A(e, t, (e) => /* @__PURE__ */ y(
|
|
367
|
+
tokens: (e, t) => A(e, t, (e) => /* @__PURE__ */ y(j, { value: e }), { align: "end" }),
|
|
369
368
|
duration: (e, t) => A(e, t, (e) => i(e), { align: "end" }),
|
|
370
369
|
date: (e, t) => A(e, t, (e) => /* @__PURE__ */ y("time", {
|
|
371
370
|
dateTime: new Date(e).toISOString(),
|
|
372
371
|
children: r(e, { time: !0 })
|
|
373
372
|
}), {}, "datetime"),
|
|
374
|
-
relative: (e, t, n = {}) => A(e, t, (e) => /* @__PURE__ */ y(
|
|
373
|
+
relative: (e, t, n = {}) => A(e, t, (e) => /* @__PURE__ */ y(M, {
|
|
375
374
|
value: e,
|
|
376
375
|
now: n.now ?? Date.now()
|
|
377
376
|
}), {}, (e, t, n) => new Date(e.getValue(n)).getTime() - new Date(t.getValue(n)).getTime()),
|
|
@@ -394,6 +393,6 @@ var ve = {
|
|
|
394
393
|
custom: (e, t, n, r = {}) => A(e, t, n, r)
|
|
395
394
|
};
|
|
396
395
|
//#endregion
|
|
397
|
-
export { w as DATA_TABLE_GROW_MIN, k as DataTable, C as KAESO_DATA_TABLE_DEFAULT_VARIANTS, S as KAESO_DATA_TABLE_VARIANTS,
|
|
396
|
+
export { w as DATA_TABLE_GROW_MIN, k as DataTable, C as KAESO_DATA_TABLE_DEFAULT_VARIANTS, S as KAESO_DATA_TABLE_VARIANTS, N as col, T as fitColumns };
|
|
398
397
|
|
|
399
398
|
//# sourceMappingURL=data-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","names":["__icon_ArrowDown01Icon","__icon_ArrowUp01Icon","cn","useInset","useUiText","Icon","Tooltip","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","keep","c","kept","full","least","growMin","last","DataTableInner","userColumns","sortingProp","ariaLabel","inset","t","sortingInner","setSortingInner","useState","selectionInner","setSelectionInner","sorting","rowSelection","selection","useMemo","selectable","table","row","useReactTable","next","u","onSortingChange","onSelectionChange","getCoreRowModel","getSortedRowModel","manualSorting","getRowId","r","root","useRef","head","body","leaf","fitInput","fitKey","hiddenFor","fit","hiddenForRef","hiddenKey","setHiddenKey","useLayoutEffect","el","ro","mode","hiddenIds","tight","overflow","hidden","cols","trackMin","gridStyle","pinEnd","rows","virtual","virtualizeAbove","getScrollElement","scrollMargin","virtualizer","useVirtualizer","density","cellPad","i","stickyCol","stickyFirstColumn","renderRow","cells","activeRowId","freshRowIds","onRowClick","style","meta","cell","content","flexRender","raw","text","tone","rowMenu","ref","className","loading","hg","h","sortable","dir","ArrowDown01Icon","ArrowUp01Icon","error","onRetry","empty","v","hasMore","loadingMore","DataTableBase","DataTable","make","get","ctx","sortingFn","Tokens","exact","formatNumber","value","formatTokens","RelativeTime","formatDate","formatRelative","now","col","formatUSD","options","id","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 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 { 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}\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): { 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 = 48;\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, 48);\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\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 \"aria-label\": ariaLabel,\n }: DataTableProps<T>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const inset = useInset();\n const t = useUiText();\n const [sortingInner, setSortingInner] = useState<SortingState>([]);\n const [selectionInner, setSelectionInner] = useState<RowSelectionState>({});\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 <CheckboxBox aria-label={t(\"dataTable.selectRow\", \"Select row\")} checked={row.getIsSelected()} onCheckedChange={(c) => row.toggleSelected(c)} />\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);\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 || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(([e]) => setHiddenKey(hiddenForRef.current(Math.round(e?.contentRect.width ?? 0))));\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n useLayoutEffect(() => {\n if (root.current) setHiddenKey(hiddenForRef.current(Math.round(root.current.getBoundingClientRect().width)));\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 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) =>\n cn(\"flex min-w-0 items-center px-12\", i === 0 && (inset ? \"pl-16\" : \"pl-24\"), i === cols.length - 1 && (inset ? \"pr-16\" : \"pr-24\"));\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\" : \"bg-panel\",\n );\n\n const renderRow = (row: Row<T>, style?: CSSProperties) => {\n const cells = row.getVisibleCells().filter((c) => !hidden.has(c.column.id));\n const el = (\n <div\n role=\"row\"\n aria-selected={selectable ? row.getIsSelected() : undefined}\n data-active={row.id === activeRowId || undefined}\n data-fresh={freshRowIds?.has(row.id) || undefined}\n tabIndex={onRowClick ? 0 : undefined}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n onRowClick?.(row.original);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && e.target === e.currentTarget) onRowClick?.(row.original);\n }}\n style={{ ...gridStyle, ...style }}\n className={cn(\n \"group/tr grid w-full text-body text-fg transition-control focus-ring-inset\",\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=\"min-w-0 truncate cell-fit\">{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\", 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\" 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 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 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\"\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 <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 ) : 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\n .getVirtualItems()\n .map((v) =>\n renderRow(rows[v.index]!, { position: \"absolute\", top: 0, left: 0, transform: `translateY(${Math.round(v.start - scrollMargin)}px)` }),\n )}\n </div>\n ) : (\n rows.map((r) => renderRow(r))\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","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","keep","c","kept","full","least","growMin","last","DataTableInner","userColumns","sortingProp","ariaLabel","inset","t","sortingInner","setSortingInner","useState","selectionInner","setSelectionInner","sorting","rowSelection","selection","useMemo","selectable","table","row","useReactTable","next","u","onSortingChange","onSelectionChange","getCoreRowModel","getSortedRowModel","manualSorting","getRowId","r","root","useRef","head","body","leaf","fitInput","fitKey","hiddenFor","fit","hiddenForRef","hiddenKey","setHiddenKey","useLayoutEffect","el","mode","hiddenIds","tight","overflow","hidden","cols","trackMin","gridStyle","pinEnd","rows","virtual","virtualizeAbove","getScrollElement","scrollMargin","virtualizer","useVirtualizer","density","cellPad","i","stickyCol","stickyFirstColumn","renderRow","cells","activeRowId","freshRowIds","onRowClick","style","meta","cell","content","flexRender","raw","text","tone","rowMenu","ref","className","loading","hg","h","sortable","dir","ArrowDown01Icon","ArrowUp01Icon","error","onRetry","empty","v","hasMore","loadingMore","DataTableBase","DataTable","make","get","ctx","sortingFn","Tokens","exact","formatNumber","value","formatTokens","RelativeTime","formatDate","formatRelative","now","col","formatUSD","options","id","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 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 { 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}\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): { 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 = 48;\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, 48);\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\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 \"aria-label\": ariaLabel,\n }: DataTableProps<T>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const inset = useInset();\n const t = useUiText();\n const [sortingInner, setSortingInner] = useState<SortingState>([]);\n const [selectionInner, setSelectionInner] = useState<RowSelectionState>({});\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 <CheckboxBox aria-label={t(\"dataTable.selectRow\", \"Select row\")} checked={row.getIsSelected()} onCheckedChange={(c) => row.toggleSelected(c)} />\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);\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(root.current.getBoundingClientRect().width)));\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 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) =>\n cn(\"flex min-w-0 items-center px-12\", i === 0 && (inset ? \"pl-16\" : \"pl-24\"), i === cols.length - 1 && (inset ? \"pr-16\" : \"pr-24\"));\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\" : \"bg-panel\",\n );\n\n const renderRow = (row: Row<T>, style?: CSSProperties) => {\n const cells = row.getVisibleCells().filter((c) => !hidden.has(c.column.id));\n const el = (\n <div\n role=\"row\"\n aria-selected={selectable ? row.getIsSelected() : undefined}\n data-active={row.id === activeRowId || undefined}\n data-fresh={freshRowIds?.has(row.id) || undefined}\n tabIndex={onRowClick ? 0 : undefined}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button, a, [role=checkbox]\")) return;\n onRowClick?.(row.original);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && e.target === e.currentTarget) onRowClick?.(row.original);\n }}\n style={{ ...gridStyle, ...style }}\n className={cn(\n \"group/tr grid w-full text-body text-fg transition-control focus-ring-inset\",\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=\"min-w-0 truncate cell-fit\">{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\", 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\" 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 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 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\"\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 <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 ) : 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\n .getVirtualItems()\n .map((v) =>\n renderRow(rows[v.index]!, { position: \"absolute\", top: 0, left: 0, transform: `translateY(${Math.round(v.start - scrollMargin)}px)` }),\n )}\n </div>\n ) : (\n rows.map((r) => renderRow(r))\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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"}
|
|
@@ -4,9 +4,9 @@ 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
6
|
import { t as o } from "../chunks/icon-CeNQtobn.js";
|
|
7
|
-
import { c as s, s as c } from "../chunks/tooltip-
|
|
7
|
+
import { c as s, s as c } from "../chunks/tooltip-DEbCCsru.js";
|
|
8
8
|
import { a as l, o as u, s as d } from "../chunks/field-d8V94bvZ.js";
|
|
9
|
-
import { i as f, n as p } from "../chunks/input-group-
|
|
9
|
+
import { i as f, n as p } from "../chunks/input-group-CYA1MEoZ.js";
|
|
10
10
|
import { n as m, r as h } from "../chunks/popover-root-D3q89WNF.js";
|
|
11
11
|
import { t as g } from "../chunks/when-idle-Cy3pinqO.js";
|
|
12
12
|
import { forwardRef as _, useCallback as v, useEffect as y, useId as b, useMemo as x, useReducer as S, useRef as C, useState as w } from "react";
|
|
@@ -17,7 +17,7 @@ var k = { size: {
|
|
|
17
17
|
sm: { classes: "h-32 pl-10 pr-12 gap-6 text-body" },
|
|
18
18
|
md: { classes: "h-36 pl-14 pr-16 gap-8 text-body" },
|
|
19
19
|
lg: { classes: "h-40 pl-16 pr-18 gap-8 text-body" }
|
|
20
|
-
} }, A = { size: "md" }, j = /* @__PURE__ */ c(() => import("../chunks/date-popup-
|
|
20
|
+
} }, A = { size: "md" }, j = /* @__PURE__ */ c(() => import("../chunks/date-popup-B-6xhb-1.js"), { base: () => import.meta.url }), M = /* @__PURE__ */ c(() => import("../chunks/range-popup-DGOnGGag.js"), { base: () => import.meta.url }), N = () => s(j), P = () => s(M);
|
|
21
21
|
function F(e) {
|
|
22
22
|
let [t, n] = w(!1), [, r] = S((e) => e + 1, 0), i = !!e.current(), a = t && !i;
|
|
23
23
|
y(() => {
|