@elabs-ai/components-data 4.2.0 → 5.1.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/README.md +1 -1
- package/dist/chunk-3OVN7MMO.js +2 -0
- package/dist/chunk-3OVN7MMO.js.map +1 -0
- package/dist/chunk-3UFWYVDS.js +2 -0
- package/dist/chunk-3UFWYVDS.js.map +1 -0
- package/dist/chunk-47ZBQZYS.js +47 -0
- package/dist/chunk-47ZBQZYS.js.map +1 -0
- package/dist/chunk-5K2IFOV2.js +2 -0
- package/dist/chunk-5K2IFOV2.js.map +1 -0
- package/dist/chunk-677ORWI6.js +17 -0
- package/dist/chunk-677ORWI6.js.map +1 -0
- package/dist/chunk-7ZYUY3UL.js +2 -0
- package/dist/chunk-7ZYUY3UL.js.map +1 -0
- package/dist/chunk-BEYHV3ZX.js +37 -0
- package/dist/chunk-BEYHV3ZX.js.map +1 -0
- package/dist/chunk-DBPJ7LVM.js +57 -0
- package/dist/chunk-DBPJ7LVM.js.map +1 -0
- package/dist/chunk-E3V3SYY7.js +87 -0
- package/dist/chunk-E3V3SYY7.js.map +1 -0
- package/dist/chunk-GBO56756.js +81 -0
- package/dist/chunk-GBO56756.js.map +1 -0
- package/dist/chunk-HG2YMSRM.js +95 -0
- package/dist/chunk-HG2YMSRM.js.map +1 -0
- package/dist/chunk-K2GHSRCP.js +1823 -0
- package/dist/chunk-K2GHSRCP.js.map +1 -0
- package/dist/chunk-KCB33PD3.js +43 -0
- package/dist/chunk-KCB33PD3.js.map +1 -0
- package/dist/chunk-MV2YVXEZ.js +67 -0
- package/dist/chunk-MV2YVXEZ.js.map +1 -0
- package/dist/chunk-NKVJUQYW.js +82 -0
- package/dist/chunk-NKVJUQYW.js.map +1 -0
- package/dist/chunk-OASM53LL.js +29 -0
- package/dist/chunk-OASM53LL.js.map +1 -0
- package/dist/chunk-RZ5MYZOA.js +2 -0
- package/dist/chunk-RZ5MYZOA.js.map +1 -0
- package/dist/chunk-SK6347WB.js +100 -0
- package/dist/chunk-SK6347WB.js.map +1 -0
- package/dist/chunk-TBB33PHQ.js +58 -0
- package/dist/chunk-TBB33PHQ.js.map +1 -0
- package/dist/chunk-VCLA45IC.js +150 -0
- package/dist/chunk-VCLA45IC.js.map +1 -0
- package/dist/chunk-XN6O6Z2N.js +58 -0
- package/dist/chunk-XN6O6Z2N.js.map +1 -0
- package/dist/chunk-ZFEW36RG.js +77 -0
- package/dist/chunk-ZFEW36RG.js.map +1 -0
- package/dist/chunk-ZQXJ34VJ.js +34 -0
- package/dist/chunk-ZQXJ34VJ.js.map +1 -0
- package/dist/chunk-ZUCGV2XD.js +42 -0
- package/dist/chunk-ZUCGV2XD.js.map +1 -0
- package/dist/column-picker/column-picker.js +8 -0
- package/dist/column-picker/column-picker.js.map +1 -0
- package/dist/column-picker/index.js +9 -0
- package/dist/column-picker/index.js.map +1 -0
- package/dist/data-table/card-layout.js +11 -0
- package/dist/data-table/card-layout.js.map +1 -0
- package/dist/data-table/cell-scales.js +26 -0
- package/dist/data-table/cell-scales.js.map +1 -0
- package/dist/data-table/cells/bar-cell.js +14 -0
- package/dist/data-table/cells/bar-cell.js.map +1 -0
- package/dist/data-table/cells/category-legend.js +9 -0
- package/dist/data-table/cells/category-legend.js.map +1 -0
- package/dist/data-table/cells/columns-cell.js +13 -0
- package/dist/data-table/cells/columns-cell.js.map +1 -0
- package/dist/data-table/cells/heatmap-cell.js +13 -0
- package/dist/data-table/cells/heatmap-cell.js.map +1 -0
- package/dist/data-table/cells/markdown-cell.js +13 -0
- package/dist/data-table/cells/markdown-cell.js.map +1 -0
- package/dist/data-table/cells/sparkline-cell.js +13 -0
- package/dist/data-table/cells/sparkline-cell.js.map +1 -0
- package/dist/data-table/column-meta.js +12 -0
- package/dist/data-table/column-meta.js.map +1 -0
- package/dist/data-table/data-table.js +23 -0
- package/dist/data-table/data-table.js.map +1 -0
- package/dist/data-table/index.js +23 -0
- package/dist/data-table/index.js.map +1 -0
- package/dist/data-table/ranks-column.js +13 -0
- package/dist/data-table/ranks-column.js.map +1 -0
- package/dist/data-table/sticky-rows.js +10 -0
- package/dist/data-table/sticky-rows.js.map +1 -0
- package/dist/data-table/use-table-breakpoint.js +13 -0
- package/dist/data-table/use-table-breakpoint.js.map +1 -0
- package/dist/facet-filter/facet-filter.js +8 -0
- package/dist/facet-filter/facet-filter.js.map +1 -0
- package/dist/facet-filter/index.js +9 -0
- package/dist/facet-filter/index.js.map +1 -0
- package/dist/filter-bar/filter-bar.js +8 -0
- package/dist/filter-bar/filter-bar.js.map +1 -0
- package/dist/filter-bar/filter-chip.js +9 -0
- package/dist/filter-bar/filter-chip.js.map +1 -0
- package/dist/filter-bar/index.js +13 -0
- package/dist/filter-bar/index.js.map +1 -0
- package/dist/index.d.ts +547 -8
- package/dist/index.js +102 -1512
- package/dist/index.js.map +1 -1
- package/dist/search-input/index.js +9 -0
- package/dist/search-input/index.js.map +1 -0
- package/dist/search-input/search-input.js +9 -0
- package/dist/search-input/search-input.js.map +1 -0
- package/dist/to-csv.js +10 -0
- package/dist/to-csv.js.map +1 -0
- package/package.json +7 -7
- package/src/data-table/card-layout.test.tsx +26 -0
- package/src/data-table/card-layout.tsx +74 -0
- package/src/data-table/cell-scales.test.ts +118 -0
- package/src/data-table/cell-scales.ts +246 -0
- package/src/data-table/cells/bar-cell.test.tsx +158 -0
- package/src/data-table/cells/bar-cell.tsx +135 -0
- package/src/data-table/cells/category-legend.test.tsx +37 -0
- package/src/data-table/cells/category-legend.tsx +58 -0
- package/src/data-table/cells/columns-cell.test.tsx +27 -0
- package/src/data-table/cells/columns-cell.tsx +79 -0
- package/src/data-table/cells/heatmap-cell.test.tsx +31 -0
- package/src/data-table/cells/heatmap-cell.tsx +116 -0
- package/src/data-table/cells/markdown-cell.test.tsx +36 -0
- package/src/data-table/cells/markdown-cell.tsx +91 -0
- package/src/data-table/cells/sparkline-cell.test.tsx +43 -0
- package/src/data-table/cells/sparkline-cell.tsx +113 -0
- package/src/data-table/column-meta.test.ts +42 -0
- package/src/data-table/column-meta.ts +282 -0
- package/src/data-table/data-table.stories.tsx +733 -1
- package/src/data-table/data-table.test.tsx +486 -0
- package/src/data-table/data-table.tsx +965 -165
- package/src/data-table/ranks-column.test.tsx +65 -0
- package/src/data-table/ranks-column.tsx +91 -0
- package/src/data-table/sticky-rows.test.ts +16 -0
- package/src/data-table/sticky-rows.ts +77 -0
- package/src/data-table/use-table-breakpoint.test.ts +14 -0
- package/src/data-table/use-table-breakpoint.ts +67 -0
- package/src/filter-bar/filter-chip.stories.tsx +1 -0
- package/src/index.ts +64 -0
- package/src/templates-data-app.stories.tsx +7 -2
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/data-table/ranks-column.tsx
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { useLocale } from "@elabs-ai/components-ui";
|
|
6
|
+
import { cn } from "@elabs-ai/components-ui/lib/cn";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function computeRowRanks(rowIds, exclude = /* @__PURE__ */ new Set()) {
|
|
9
|
+
const ranks = /* @__PURE__ */ new Map();
|
|
10
|
+
let rank = 0;
|
|
11
|
+
for (const id of rowIds) {
|
|
12
|
+
if (!exclude.has(id)) ranks.set(id, ++rank);
|
|
13
|
+
}
|
|
14
|
+
return ranks;
|
|
15
|
+
}
|
|
16
|
+
var DataTableRankHeader = forwardRef(
|
|
17
|
+
function DataTableRankHeader2({ className, children, label, ...props }, ref) {
|
|
18
|
+
const { t } = useLocale();
|
|
19
|
+
const name = label ?? t("data.table.rankHeader");
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
"th",
|
|
22
|
+
{
|
|
23
|
+
ref,
|
|
24
|
+
scope: "col",
|
|
25
|
+
title: name,
|
|
26
|
+
"data-slot": "data-table-rank-header",
|
|
27
|
+
className: cn("w-10 px-3 text-end align-middle tabular-nums", className),
|
|
28
|
+
...props,
|
|
29
|
+
children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
30
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "#" }),
|
|
31
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: name })
|
|
32
|
+
] })
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
var DataTableRankCell = forwardRef(function DataTableRankCell2({ rank, className, ...props }, ref) {
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
39
|
+
"td",
|
|
40
|
+
{
|
|
41
|
+
ref,
|
|
42
|
+
"data-slot": "data-table-rank-cell",
|
|
43
|
+
className: cn(
|
|
44
|
+
"w-10 px-3 text-end align-middle tabular-nums text-muted-foreground",
|
|
45
|
+
className
|
|
46
|
+
),
|
|
47
|
+
...props,
|
|
48
|
+
children: rank
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
computeRowRanks,
|
|
55
|
+
DataTableRankHeader,
|
|
56
|
+
DataTableRankCell
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=chunk-XN6O6Z2N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-table/ranks-column.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type TdHTMLAttributes, type ThHTMLAttributes } from \"react\";\nimport { useLocale } from \"@elabs-ai/components-ui\";\nimport { cn } from \"@elabs-ai/components-ui/lib/cn\";\n\n/**\n * ranks-column.tsx — `DataTable`'s `showRanks` column (RM-123).\n *\n * A rank belongs to the ROW: it is the row's 1-based position in the `data`\n * you passed (sticky rows excluded), so re-sorting, filtering or paging moves\n * the numbers with their rows and never renumbers them. It is rendered beside\n * the TanStack columns, not as one, so the table model is unchanged.\n */\n\n/** Row id → rank (1…n in data order), skipping the ids in `exclude`. */\nexport function computeRowRanks(\n rowIds: readonly string[],\n exclude: ReadonlySet<string> = new Set(),\n): Map<string, number> {\n const ranks = new Map<string, number>();\n let rank = 0;\n for (const id of rowIds) {\n if (!exclude.has(id)) ranks.set(id, ++rank);\n }\n return ranks;\n}\n\nexport interface DataTableRankHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /**\n * The column's accessible NAME, and its `title`. Defaults to the locale\n * seam's `data.table.rankHeader`.\n *\n * The visible glyph stays \"#\" — it has to, in a 40px column — so the glyph\n * is decorative (`aria-hidden`) and this string is what the column is\n * actually called. Without it the header's accessible name is the single\n * character \"#\", which says nothing about WHICH position is printed: beside\n * a sorted column the numbers legitimately read 2, 1, 6, 4 and a reader has\n * no way to learn why. `DataTable` prints the same rule visibly, once, above\n * the table (`data-slot=\"data-table-rank-key\"`).\n */\n label?: string;\n}\n\n/**\n * The ranks column's header cell: \"#\" as the visible glyph, `label` as the\n * name AT reads.\n */\nexport const DataTableRankHeader = forwardRef<HTMLTableCellElement, DataTableRankHeaderProps>(\n function DataTableRankHeader({ className, children, label, ...props }, ref) {\n const { t } = useLocale();\n const name = label ?? t(\"data.table.rankHeader\");\n return (\n <th\n ref={ref}\n scope=\"col\"\n title={name}\n data-slot=\"data-table-rank-header\"\n className={cn(\"w-10 px-3 text-end align-middle tabular-nums\", className)}\n {...props}\n >\n {children ?? (\n <>\n <span aria-hidden=\"true\">#</span>\n <span className=\"sr-only\">{name}</span>\n </>\n )}\n </th>\n );\n },\n);\n\n/** One row's rank cell; `rank` undefined (a sticky row) renders empty. */\nexport const DataTableRankCell = forwardRef<\n HTMLTableCellElement,\n TdHTMLAttributes<HTMLTableCellElement> & { rank?: string }\n>(function DataTableRankCell({ rank, className, ...props }, ref) {\n return (\n <td\n ref={ref}\n data-slot=\"data-table-rank-cell\"\n className={cn(\n \"w-10 px-3 text-end align-middle tabular-nums text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {rank}\n </td>\n );\n});\n"],"mappings":";;;AAEA,SAAS,kBAAgE;AACzE,SAAS,iBAAiB;AAC1B,SAAS,UAAU;AA0DT,mBACE,KADF;AA9CH,SAAS,gBACd,QACA,UAA+B,oBAAI,IAAI,GAClB;AACrB,QAAM,QAAQ,oBAAI,IAAoB;AACtC,MAAI,OAAO;AACX,aAAW,MAAM,QAAQ;AACvB,QAAI,CAAC,QAAQ,IAAI,EAAE,EAAG,OAAM,IAAI,IAAI,EAAE,IAAI;AAAA,EAC5C;AACA,SAAO;AACT;AAsBO,IAAM,sBAAsB;AAAA,EACjC,SAASA,qBAAoB,EAAE,WAAW,UAAU,OAAO,GAAG,MAAM,GAAG,KAAK;AAC1E,UAAM,EAAE,EAAE,IAAI,UAAU;AACxB,UAAM,OAAO,SAAS,EAAE,uBAAuB;AAC/C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAM;AAAA,QACN,OAAO;AAAA,QACP,aAAU;AAAA,QACV,WAAW,GAAG,gDAAgD,SAAS;AAAA,QACtE,GAAG;AAAA,QAEH,sBACC,iCACE;AAAA,8BAAC,UAAK,eAAY,QAAO,eAAC;AAAA,UAC1B,oBAAC,UAAK,WAAU,WAAW,gBAAK;AAAA,WAClC;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAGO,IAAM,oBAAoB,WAG/B,SAASC,mBAAkB,EAAE,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK;AAC/D,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ,CAAC;","names":["DataTableRankHeader","DataTableRankCell"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/facet-filter/facet-filter.tsx
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import {
|
|
6
|
+
Badge,
|
|
7
|
+
Button,
|
|
8
|
+
DropdownMenu,
|
|
9
|
+
DropdownMenuContent,
|
|
10
|
+
DropdownMenuItem,
|
|
11
|
+
DropdownMenuLabel,
|
|
12
|
+
DropdownMenuSeparator,
|
|
13
|
+
DropdownMenuTrigger,
|
|
14
|
+
useLocale
|
|
15
|
+
} from "@elabs-ai/components-ui";
|
|
16
|
+
import { cn } from "@elabs-ai/components-ui/lib/cn";
|
|
17
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
var FacetFilter = forwardRef(function FacetFilter2({ title, options, selected, onSelectedChange, className, ...props }, ref) {
|
|
19
|
+
const { t } = useLocale();
|
|
20
|
+
const selectedSet = new Set(selected);
|
|
21
|
+
const toggle = (value) => {
|
|
22
|
+
const next = new Set(selectedSet);
|
|
23
|
+
if (next.has(value)) next.delete(value);
|
|
24
|
+
else next.add(value);
|
|
25
|
+
onSelectedChange([...next]);
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
28
|
+
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { ref, variant: "outline", className: cn("border-dashed", className), ...props, children: [
|
|
29
|
+
title,
|
|
30
|
+
selected.length > 0 ? /* @__PURE__ */ jsx(
|
|
31
|
+
Badge,
|
|
32
|
+
{
|
|
33
|
+
variant: "secondary",
|
|
34
|
+
className: "ms-1 rounded px-1.5 animate-in fade-in zoom-in-95 duration-fast ease-entrance",
|
|
35
|
+
children: selected.length
|
|
36
|
+
}
|
|
37
|
+
) : null
|
|
38
|
+
] }) }),
|
|
39
|
+
/* @__PURE__ */ jsxs(DropdownMenuContent, { className: "min-w-[12rem]", children: [
|
|
40
|
+
/* @__PURE__ */ jsx(DropdownMenuLabel, { children: title }),
|
|
41
|
+
options.map((opt) => {
|
|
42
|
+
const checked = selectedSet.has(opt.value);
|
|
43
|
+
return /* @__PURE__ */ jsxs(
|
|
44
|
+
DropdownMenuItem,
|
|
45
|
+
{
|
|
46
|
+
onSelect: (e) => {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
toggle(opt.value);
|
|
49
|
+
},
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsx(
|
|
52
|
+
"span",
|
|
53
|
+
{
|
|
54
|
+
"aria-hidden": "true",
|
|
55
|
+
className: "flex size-4 items-center justify-center rounded border transition-colors duration-fast ease-standard " + (checked ? "border-primary bg-primary text-primary-foreground" : "border-input"),
|
|
56
|
+
children: checked ? "\u2713" : ""
|
|
57
|
+
}
|
|
58
|
+
),
|
|
59
|
+
opt.label
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
opt.value
|
|
63
|
+
);
|
|
64
|
+
}),
|
|
65
|
+
selected.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
66
|
+
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
67
|
+
/* @__PURE__ */ jsx(DropdownMenuItem, { onSelect: () => onSelectedChange([]), children: t("data.facetFilter.clearFilters") })
|
|
68
|
+
] }) : null
|
|
69
|
+
] })
|
|
70
|
+
] });
|
|
71
|
+
});
|
|
72
|
+
FacetFilter.displayName = "FacetFilter";
|
|
73
|
+
|
|
74
|
+
export {
|
|
75
|
+
FacetFilter
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=chunk-ZFEW36RG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/facet-filter/facet-filter.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes } from \"react\";\nimport { forwardRef } from \"react\";\nimport {\n Badge,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n useLocale,\n} from \"@elabs-ai/components-ui\";\nimport { cn } from \"@elabs-ai/components-ui/lib/cn\";\n\nexport interface FacetOption {\n label: string;\n value: string;\n}\n\nexport interface FacetFilterProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"title\"> {\n title: string;\n options: FacetOption[];\n /** Currently selected values (controlled). */\n selected: string[];\n onSelectedChange: (values: string[]) => void;\n}\n\n/**\n * Multi-select faceted filter rendered as a dropdown of toggles.\n *\n * `disabled` (forwarded to the trigger `Button`) is how a consumer signals a\n * pending fetch (D5 — the app owns fetch state, this control just reflects\n * it; see loading-states.md).\n *\n * The trigger takes `Button`'s DEFAULT size (`h-9`), not `sm` (#346): a facet\n * filter lives in a toolbar beside `Select` / `Input` / `DatePicker`, all of\n * which land on `h-9` (Select's own default rung, Input hardcoded, DatePicker\n * via this same Button default). An `sm` trigger was the lone `h-8` outlier in\n * that row, so the top and bottom edges of a filter bar didn't line up.\n */\nexport const FacetFilter = forwardRef<HTMLButtonElement, FacetFilterProps>(function FacetFilter(\n { title, options, selected, onSelectedChange, className, ...props },\n ref,\n) {\n const { t } = useLocale();\n const selectedSet = new Set(selected);\n const toggle = (value: string) => {\n const next = new Set(selectedSet);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n onSelectedChange([...next]);\n };\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button ref={ref} variant=\"outline\" className={cn(\"border-dashed\", className)} {...props}>\n {title}\n {selected.length > 0 ? (\n <Badge\n variant=\"secondary\"\n className=\"ms-1 rounded px-1.5 animate-in fade-in zoom-in-95 duration-fast ease-entrance\"\n >\n {selected.length}\n </Badge>\n ) : null}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"min-w-[12rem]\">\n <DropdownMenuLabel>{title}</DropdownMenuLabel>\n {options.map((opt) => {\n const checked = selectedSet.has(opt.value);\n return (\n <DropdownMenuItem\n key={opt.value}\n onSelect={(e) => {\n e.preventDefault();\n toggle(opt.value);\n }}\n >\n <span\n aria-hidden=\"true\"\n className={\n \"flex size-4 items-center justify-center rounded border transition-colors duration-fast ease-standard \" +\n (checked ? \"border-primary bg-primary text-primary-foreground\" : \"border-input\")\n }\n >\n {checked ? \"✓\" : \"\"}\n </span>\n {opt.label}\n </DropdownMenuItem>\n );\n })}\n {selected.length > 0 ? (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onSelect={() => onSelectedChange([])}>\n {t(\"data.facetFilter.clearFilters\")}\n </DropdownMenuItem>\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n});\n\nFacetFilter.displayName = \"FacetFilter\";\n"],"mappings":";;;AACA,SAAS,kBAAkB;AAC3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,UAAU;AA4CX,SAsCE,UAnCE,KAHJ;AAhBD,IAAM,cAAc,WAAgD,SAASA,aAClF,EAAE,OAAO,SAAS,UAAU,kBAAkB,WAAW,GAAG,MAAM,GAClE,KACA;AACA,QAAM,EAAE,EAAE,IAAI,UAAU;AACxB,QAAM,cAAc,IAAI,IAAI,QAAQ;AACpC,QAAM,SAAS,CAAC,UAAkB;AAChC,UAAM,OAAO,IAAI,IAAI,WAAW;AAChC,QAAI,KAAK,IAAI,KAAK,EAAG,MAAK,OAAO,KAAK;AAAA,QACjC,MAAK,IAAI,KAAK;AACnB,qBAAiB,CAAC,GAAG,IAAI,CAAC;AAAA,EAC5B;AAEA,SACE,qBAAC,gBACC;AAAA,wBAAC,uBAAoB,SAAO,MAC1B,+BAAC,UAAO,KAAU,SAAQ,WAAU,WAAW,GAAG,iBAAiB,SAAS,GAAI,GAAG,OAChF;AAAA;AAAA,MACA,SAAS,SAAS,IACjB;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,WAAU;AAAA,UAET,mBAAS;AAAA;AAAA,MACZ,IACE;AAAA,OACN,GACF;AAAA,IACA,qBAAC,uBAAoB,WAAU,iBAC7B;AAAA,0BAAC,qBAAmB,iBAAM;AAAA,MACzB,QAAQ,IAAI,CAAC,QAAQ;AACpB,cAAM,UAAU,YAAY,IAAI,IAAI,KAAK;AACzC,eACE;AAAA,UAAC;AAAA;AAAA,YAEC,UAAU,CAAC,MAAM;AACf,gBAAE,eAAe;AACjB,qBAAO,IAAI,KAAK;AAAA,YAClB;AAAA,YAEA;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WACE,2GACC,UAAU,sDAAsD;AAAA,kBAGlE,oBAAU,WAAM;AAAA;AAAA,cACnB;AAAA,cACC,IAAI;AAAA;AAAA;AAAA,UAfA,IAAI;AAAA,QAgBX;AAAA,MAEJ,CAAC;AAAA,MACA,SAAS,SAAS,IACjB,iCACE;AAAA,4BAAC,yBAAsB;AAAA,QACvB,oBAAC,oBAAiB,UAAU,MAAM,iBAAiB,CAAC,CAAC,GAClD,YAAE,+BAA+B,GACpC;AAAA,SACF,IACE;AAAA,OACN;AAAA,KACF;AAEJ,CAAC;AAED,YAAY,cAAc;","names":["FacetFilter"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/to-csv.ts
|
|
4
|
+
import { csvQuoteField, csvStringifyValue, downloadBlob } from "@elabs-ai/components-ui";
|
|
5
|
+
var stringifyValue = csvStringifyValue;
|
|
6
|
+
var quoteField = csvQuoteField;
|
|
7
|
+
function toCsv(rows, opts) {
|
|
8
|
+
const delimiter = opts?.delimiter ?? ",";
|
|
9
|
+
const includeHeader = opts?.header !== false;
|
|
10
|
+
const firstRow = rows[0];
|
|
11
|
+
const cols = opts?.columns ?? (firstRow !== void 0 ? Object.keys(firstRow).map((k) => ({ key: k })) : []);
|
|
12
|
+
const lines = [];
|
|
13
|
+
if (includeHeader && cols.length > 0) {
|
|
14
|
+
const headerRow = cols.map((c) => quoteField(c.header ?? c.key, delimiter)).join(delimiter);
|
|
15
|
+
lines.push(headerRow);
|
|
16
|
+
}
|
|
17
|
+
for (const row of rows) {
|
|
18
|
+
const line = cols.map((c) => quoteField(stringifyValue(row[c.key]), delimiter)).join(delimiter);
|
|
19
|
+
lines.push(line);
|
|
20
|
+
}
|
|
21
|
+
return lines.join("\r\n") + (lines.length > 0 ? "\r\n" : "");
|
|
22
|
+
}
|
|
23
|
+
function downloadCsv(rows, opts) {
|
|
24
|
+
if (typeof document === "undefined") return;
|
|
25
|
+
const csv = toCsv(rows, opts);
|
|
26
|
+
const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
|
|
27
|
+
downloadBlob(blob, (opts?.filename ?? "download") + ".csv");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
toCsv,
|
|
32
|
+
downloadCsv
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=chunk-ZQXJ34VJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/to-csv.ts"],"sourcesContent":["/**\n * Minimal, dependency-free CSV serializer (RFC 4180).\n *\n * `toCsv` is pure + SSR-safe (no DOM, no deps). `downloadCsv` delegates the\n * browser save mechanics to `@elabs-ai/components-ui`'s shared `downloadBlob` (one home for\n * the Blob → `<a download>` dance; @elabs-ai/components-ui is already a peer dep here).\n * Value stringification + injection-guarded field quoting live in\n * `@elabs-ai/components-ui`'s `csv` lib (`csvStringifyValue`/`csvQuoteField`) — the shared\n * home so `@elabs-ai/components-charts`'s ChartFrame serializer can reuse the same logic\n * without a charts → data dependency (not allowed per the one-way rule).\n */\nimport { csvQuoteField, csvStringifyValue, downloadBlob } from \"@elabs-ai/components-ui\";\n\nexport type CsvColumn<TData> = { key: keyof TData & string; header?: string };\n\nexport interface ToCsvOptions<TData> {\n /** Subset/reorder of columns. Omitted → all keys from rows[0]. */\n columns?: CsvColumn<TData>[];\n /** Emit header row. Default true. */\n header?: boolean;\n /** Field delimiter. Default \",\". */\n delimiter?: string;\n}\n\nexport interface DownloadCsvOptions<TData> extends ToCsvOptions<TData> {\n /** File name without extension. Default \"download\". */\n filename?: string;\n}\n\nconst stringifyValue = csvStringifyValue;\nconst quoteField = csvQuoteField;\n\n/**\n * Serialize rows to a CSV string (no DOM access — safe for SSR / jsdom).\n */\nexport function toCsv<TData extends Record<string, unknown>>(\n rows: TData[],\n opts?: ToCsvOptions<TData>,\n): string {\n const delimiter = opts?.delimiter ?? \",\";\n const includeHeader = opts?.header !== false;\n\n // Derive columns from first row when not provided.\n const firstRow = rows[0];\n const cols: CsvColumn<TData>[] =\n opts?.columns ??\n (firstRow !== undefined\n ? (Object.keys(firstRow) as (keyof TData & string)[]).map((k) => ({ key: k }))\n : []);\n\n const lines: string[] = [];\n\n if (includeHeader && cols.length > 0) {\n const headerRow = cols.map((c) => quoteField(c.header ?? c.key, delimiter)).join(delimiter);\n lines.push(headerRow);\n }\n\n for (const row of rows) {\n const line = cols.map((c) => quoteField(stringifyValue(row[c.key]), delimiter)).join(delimiter);\n lines.push(line);\n }\n\n // RFC 4180: CRLF line terminator, trailing newline.\n return lines.join(\"\\r\\n\") + (lines.length > 0 ? \"\\r\\n\" : \"\");\n}\n\n/**\n * Trigger a CSV file download in the browser. No-op in SSR environments.\n */\nexport function downloadCsv<TData extends Record<string, unknown>>(\n rows: TData[],\n opts?: DownloadCsvOptions<TData>,\n): void {\n if (typeof document === \"undefined\") return;\n\n const csv = toCsv(rows, opts);\n const blob = new Blob([csv], { type: \"text/csv;charset=utf-8;\" });\n downloadBlob(blob, (opts?.filename ?? \"download\") + \".csv\");\n}\n"],"mappings":";;;AAWA,SAAS,eAAe,mBAAmB,oBAAoB;AAkB/D,IAAM,iBAAiB;AACvB,IAAM,aAAa;AAKZ,SAAS,MACd,MACA,MACQ;AACR,QAAM,YAAY,MAAM,aAAa;AACrC,QAAM,gBAAgB,MAAM,WAAW;AAGvC,QAAM,WAAW,KAAK,CAAC;AACvB,QAAM,OACJ,MAAM,YACL,aAAa,SACT,OAAO,KAAK,QAAQ,EAA+B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAC3E,CAAC;AAEP,QAAM,QAAkB,CAAC;AAEzB,MAAI,iBAAiB,KAAK,SAAS,GAAG;AACpC,UAAM,YAAY,KAAK,IAAI,CAAC,MAAM,WAAW,EAAE,UAAU,EAAE,KAAK,SAAS,CAAC,EAAE,KAAK,SAAS;AAC1F,UAAM,KAAK,SAAS;AAAA,EACtB;AAEA,aAAW,OAAO,MAAM;AACtB,UAAM,OAAO,KAAK,IAAI,CAAC,MAAM,WAAW,eAAe,IAAI,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,SAAS;AAC9F,UAAM,KAAK,IAAI;AAAA,EACjB;AAGA,SAAO,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,IAAI,SAAS;AAC3D;AAKO,SAAS,YACd,MACA,MACM;AACN,MAAI,OAAO,aAAa,YAAa;AAErC,QAAM,MAAM,MAAM,MAAM,IAAI;AAC5B,QAAM,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAChE,eAAa,OAAO,MAAM,YAAY,cAAc,MAAM;AAC5D;","names":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/data-table/cells/category-legend.tsx
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { cn } from "@elabs-ai/components-ui/lib/cn";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
var CategoryLegend = forwardRef(
|
|
8
|
+
function CategoryLegend2({ scale, title, formatCategory = String, className, ...props }, ref) {
|
|
9
|
+
if (scale.categories.length === 0) return null;
|
|
10
|
+
return /* @__PURE__ */ jsxs(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
ref,
|
|
14
|
+
role: "group",
|
|
15
|
+
"aria-label": title,
|
|
16
|
+
"data-slot": "category-legend",
|
|
17
|
+
className: cn("flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-meta", className),
|
|
18
|
+
...props,
|
|
19
|
+
children: [
|
|
20
|
+
title && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-muted-foreground", children: title }),
|
|
21
|
+
/* @__PURE__ */ jsx("ul", { className: "flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1", children: scale.categories.map((category) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-1", children: [
|
|
22
|
+
/* @__PURE__ */ jsx(
|
|
23
|
+
"span",
|
|
24
|
+
{
|
|
25
|
+
"aria-hidden": "true",
|
|
26
|
+
"data-slot": "category-legend-swatch",
|
|
27
|
+
className: "block size-2.5 rounded-full",
|
|
28
|
+
style: { backgroundColor: category.color }
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
/* @__PURE__ */ jsx("span", { children: formatCategory(category.value) })
|
|
32
|
+
] }, String(category.value))) })
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
CategoryLegend
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=chunk-ZUCGV2XD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data-table/cells/category-legend.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport type { ColorScale } from \"@elabs-ai/components-ui\";\nimport { cn } from \"@elabs-ai/components-ui/lib/cn\";\n\nexport interface CategoryLegendProps extends HTMLAttributes<HTMLDivElement> {\n /** A categorical scale — its `categories`, in first-seen order. */\n scale: ColorScale;\n /** What the colours divide the rows BY (the `colorBy` key, or a nicer name). */\n title?: string;\n /** Print a category value; defaults to `String`. */\n formatCategory?: (value: string | number) => string;\n}\n\n/**\n * A `colorBy` column's colour key: one named swatch per category.\n *\n * A categorical fill answers \"which group\", and unlike a bar's length or a\n * heatmap's ramp there is nothing in the cell to read it off. Without a key the\n * category is carried by hue alone — unreadable to anyone who cannot separate\n * those hues, and unnameable by everyone else (WCAG 1.4.1). This is the same\n * key `HeatmapLegend` gives an ordered scale, for an unordered one.\n */\nexport const CategoryLegend = forwardRef<HTMLDivElement, CategoryLegendProps>(\n function CategoryLegend({ scale, title, formatCategory = String, className, ...props }, ref) {\n if (scale.categories.length === 0) return null;\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={title}\n data-slot=\"category-legend\"\n className={cn(\"flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-meta\", className)}\n {...props}\n >\n {title && (\n <span aria-hidden=\"true\" className=\"text-muted-foreground\">\n {title}\n </span>\n )}\n <ul className=\"flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1\">\n {scale.categories.map((category) => (\n <li key={String(category.value)} className=\"flex items-center gap-1\">\n <span\n aria-hidden=\"true\"\n data-slot=\"category-legend-swatch\"\n className=\"block size-2.5 rounded-full\"\n style={{ backgroundColor: category.color }}\n />\n <span>{formatCategory(category.value)}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n },\n);\n"],"mappings":";;;AAEA,SAAS,kBAAuC;AAEhD,SAAS,UAAU;AAiCT,cAME,YANF;AAbH,IAAM,iBAAiB;AAAA,EAC5B,SAASA,gBAAe,EAAE,OAAO,OAAO,iBAAiB,QAAQ,WAAW,GAAG,MAAM,GAAG,KAAK;AAC3F,QAAI,MAAM,WAAW,WAAW,EAAG,QAAO;AAC1C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,cAAY;AAAA,QACZ,aAAU;AAAA,QACV,WAAW,GAAG,iEAAiE,SAAS;AAAA,QACvF,GAAG;AAAA,QAEH;AAAA,mBACC,oBAAC,UAAK,eAAY,QAAO,WAAU,yBAChC,iBACH;AAAA,UAEF,oBAAC,QAAG,WAAU,uDACX,gBAAM,WAAW,IAAI,CAAC,aACrB,qBAAC,QAAgC,WAAU,2BACzC;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,eAAY;AAAA,gBACZ,aAAU;AAAA,gBACV,WAAU;AAAA,gBACV,OAAO,EAAE,iBAAiB,SAAS,MAAM;AAAA;AAAA,YAC3C;AAAA,YACA,oBAAC,UAAM,yBAAe,SAAS,KAAK,GAAE;AAAA,eAP/B,OAAO,SAAS,KAAK,CAQ9B,CACD,GACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;","names":["CategoryLegend"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
barDomain,
|
|
4
|
+
barGeometry,
|
|
5
|
+
computeColumnScales,
|
|
6
|
+
extentOf,
|
|
7
|
+
finiteNumbers,
|
|
8
|
+
heatmapColorScaleSpec,
|
|
9
|
+
labelBoxCh,
|
|
10
|
+
seriesEnds,
|
|
11
|
+
seriesValues,
|
|
12
|
+
unionExtent
|
|
13
|
+
} from "../chunk-VCLA45IC.js";
|
|
14
|
+
export {
|
|
15
|
+
barDomain,
|
|
16
|
+
barGeometry,
|
|
17
|
+
computeColumnScales,
|
|
18
|
+
extentOf,
|
|
19
|
+
finiteNumbers,
|
|
20
|
+
heatmapColorScaleSpec,
|
|
21
|
+
labelBoxCh,
|
|
22
|
+
seriesEnds,
|
|
23
|
+
seriesValues,
|
|
24
|
+
unionExtent
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=cell-scales.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
BAR_CELL_NEGATIVE_COLOR,
|
|
5
|
+
BAR_CELL_POSITIVE_COLOR,
|
|
6
|
+
BarCell
|
|
7
|
+
} from "../../chunk-SK6347WB.js";
|
|
8
|
+
import "../../chunk-VCLA45IC.js";
|
|
9
|
+
export {
|
|
10
|
+
BAR_CELL_NEGATIVE_COLOR,
|
|
11
|
+
BAR_CELL_POSITIVE_COLOR,
|
|
12
|
+
BarCell
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=bar-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
COLUMNS_CELL_HAIRLINE_WIDTH,
|
|
5
|
+
ColumnsCell
|
|
6
|
+
} from "../../chunk-GBO56756.js";
|
|
7
|
+
import "../../chunk-SK6347WB.js";
|
|
8
|
+
import "../../chunk-VCLA45IC.js";
|
|
9
|
+
export {
|
|
10
|
+
COLUMNS_CELL_HAIRLINE_WIDTH,
|
|
11
|
+
ColumnsCell
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=columns-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
SPARKLINE_CELL_STROKE_WIDTH,
|
|
5
|
+
SparklineCell
|
|
6
|
+
} from "../../chunk-HG2YMSRM.js";
|
|
7
|
+
import "../../chunk-SK6347WB.js";
|
|
8
|
+
import "../../chunk-VCLA45IC.js";
|
|
9
|
+
export {
|
|
10
|
+
SPARKLINE_CELL_STROKE_WIDTH,
|
|
11
|
+
SparklineCell
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=sparkline-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
DataTableWithRef,
|
|
5
|
+
createSelectionColumn
|
|
6
|
+
} from "../chunk-K2GHSRCP.js";
|
|
7
|
+
import "../chunk-BEYHV3ZX.js";
|
|
8
|
+
import "../chunk-NKVJUQYW.js";
|
|
9
|
+
import "../chunk-MV2YVXEZ.js";
|
|
10
|
+
import "../chunk-HG2YMSRM.js";
|
|
11
|
+
import "../chunk-TBB33PHQ.js";
|
|
12
|
+
import "../chunk-XN6O6Z2N.js";
|
|
13
|
+
import "../chunk-47ZBQZYS.js";
|
|
14
|
+
import "../chunk-KCB33PD3.js";
|
|
15
|
+
import "../chunk-ZUCGV2XD.js";
|
|
16
|
+
import "../chunk-GBO56756.js";
|
|
17
|
+
import "../chunk-SK6347WB.js";
|
|
18
|
+
import "../chunk-VCLA45IC.js";
|
|
19
|
+
export {
|
|
20
|
+
DataTableWithRef as DataTable,
|
|
21
|
+
createSelectionColumn
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "../chunk-RZ5MYZOA.js";
|
|
3
|
+
import {
|
|
4
|
+
DataTableWithRef,
|
|
5
|
+
createSelectionColumn
|
|
6
|
+
} from "../chunk-K2GHSRCP.js";
|
|
7
|
+
import "../chunk-BEYHV3ZX.js";
|
|
8
|
+
import "../chunk-NKVJUQYW.js";
|
|
9
|
+
import "../chunk-MV2YVXEZ.js";
|
|
10
|
+
import "../chunk-HG2YMSRM.js";
|
|
11
|
+
import "../chunk-TBB33PHQ.js";
|
|
12
|
+
import "../chunk-XN6O6Z2N.js";
|
|
13
|
+
import "../chunk-47ZBQZYS.js";
|
|
14
|
+
import "../chunk-KCB33PD3.js";
|
|
15
|
+
import "../chunk-ZUCGV2XD.js";
|
|
16
|
+
import "../chunk-GBO56756.js";
|
|
17
|
+
import "../chunk-SK6347WB.js";
|
|
18
|
+
import "../chunk-VCLA45IC.js";
|
|
19
|
+
export {
|
|
20
|
+
DataTableWithRef as DataTable,
|
|
21
|
+
createSelectionColumn
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
DataTableRankCell,
|
|
5
|
+
DataTableRankHeader,
|
|
6
|
+
computeRowRanks
|
|
7
|
+
} from "../chunk-XN6O6Z2N.js";
|
|
8
|
+
export {
|
|
9
|
+
DataTableRankCell,
|
|
10
|
+
DataTableRankHeader,
|
|
11
|
+
computeRowRanks
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=ranks-column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use client";
|
|
3
|
+
import {
|
|
4
|
+
DATA_TABLE_BREAKPOINT_THRESHOLDS,
|
|
5
|
+
tableBreakpointForWidth,
|
|
6
|
+
useTableBreakpoint
|
|
7
|
+
} from "../chunk-BEYHV3ZX.js";
|
|
8
|
+
export {
|
|
9
|
+
DATA_TABLE_BREAKPOINT_THRESHOLDS,
|
|
10
|
+
tableBreakpointForWidth,
|
|
11
|
+
useTableBreakpoint
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=use-table-breakpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|