@tumaet/prompt-ui-components 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/components/table/PromptTable.js +47 -0
  2. package/dist/components/table/PromptTable.js.map +1 -0
  3. package/dist/components/table/TableTypes.js +2 -0
  4. package/dist/components/table/TableTypes.js.map +1 -0
  5. package/dist/components/table/actions/ActionDialog.js +11 -0
  6. package/dist/components/table/actions/ActionDialog.js.map +1 -0
  7. package/dist/components/table/actions/ActionsMenu.js +46 -0
  8. package/dist/components/table/actions/ActionsMenu.js.map +1 -0
  9. package/dist/components/table/actions/DropdownMenuItemForRowAction.js +15 -0
  10. package/dist/components/table/actions/DropdownMenuItemForRowAction.js.map +1 -0
  11. package/dist/components/table/columnDefs/actionColumn.js +11 -0
  12. package/dist/components/table/columnDefs/actionColumn.js.map +1 -0
  13. package/dist/components/table/columnDefs/selectColumn.js +14 -0
  14. package/dist/components/table/columnDefs/selectColumn.js.map +1 -0
  15. package/dist/components/table/filters/ActiveTableFiltersBar.js +46 -0
  16. package/dist/components/table/filters/ActiveTableFiltersBar.js.map +1 -0
  17. package/dist/components/table/filters/FilterBadge.js +7 -0
  18. package/dist/components/table/filters/FilterBadge.js.map +1 -0
  19. package/dist/components/table/filters/NumericRangeFilterSection.js +25 -0
  20. package/dist/components/table/filters/NumericRangeFilterSection.js.map +1 -0
  21. package/dist/components/table/filters/SelectFilterSection.js +13 -0
  22. package/dist/components/table/filters/SelectFilterSection.js.map +1 -0
  23. package/dist/components/table/filters/TableFiltersMenu.js +20 -0
  24. package/dist/components/table/filters/TableFiltersMenu.js.map +1 -0
  25. package/dist/components/table/filters/applyFiltersToColumns.js +23 -0
  26. package/dist/components/table/filters/applyFiltersToColumns.js.map +1 -0
  27. package/dist/components/table/filters/filterFns.js +27 -0
  28. package/dist/components/table/filters/filterFns.js.map +1 -0
  29. package/dist/components/table/generateColumns.js +19 -0
  30. package/dist/components/table/generateColumns.js.map +1 -0
  31. package/dist/components/table/index.js +3 -2
  32. package/dist/components/table/index.js.map +1 -1
  33. package/dist/components/table/tableBarComponents/TableActionsButton.js +10 -0
  34. package/dist/components/table/tableBarComponents/TableActionsButton.js.map +1 -0
  35. package/dist/components/table/tableBarComponents/TableColumnVisibilityButton.js +15 -0
  36. package/dist/components/table/tableBarComponents/TableColumnVisibilityButton.js.map +1 -0
  37. package/dist/components/table/tableBarComponents/TableInfoText.js +6 -0
  38. package/dist/components/table/tableBarComponents/TableInfoText.js.map +1 -0
  39. package/dist/components/table/tableBarComponents/TableSearch.js +7 -0
  40. package/dist/components/table/tableBarComponents/TableSearch.js.map +1 -0
  41. package/dist/components/table/tableComponents/SortableHeader.js +7 -0
  42. package/dist/components/table/tableComponents/SortableHeader.js.map +1 -0
  43. package/dist/components/table/tableComponents/TableCheckbox.js +6 -0
  44. package/dist/components/table/tableComponents/TableCheckbox.js.map +1 -0
  45. package/dist/components/table/tableComponents/TableHeaders.js +17 -0
  46. package/dist/components/table/tableComponents/TableHeaders.js.map +1 -0
  47. package/dist/components/table/tableComponents/TableRows.js +15 -0
  48. package/dist/components/table/tableComponents/TableRows.js.map +1 -0
  49. package/dist/types/components/table/PromptTable.d.ts +3 -0
  50. package/dist/types/components/table/TableTypes.d.ts +44 -0
  51. package/dist/types/components/table/actions/ActionDialog.d.ts +10 -0
  52. package/dist/types/components/table/actions/ActionsMenu.d.ts +10 -0
  53. package/dist/types/components/table/actions/DropdownMenuItemForRowAction.d.ts +9 -0
  54. package/dist/types/components/table/columnDefs/actionColumn.d.ts +5 -0
  55. package/dist/types/components/table/columnDefs/selectColumn.d.ts +4 -0
  56. package/dist/types/components/table/filters/ActiveTableFiltersBar.d.ts +8 -0
  57. package/dist/types/components/table/filters/FilterBadge.d.ts +4 -0
  58. package/dist/types/components/table/filters/NumericRangeFilterSection.d.ts +8 -0
  59. package/dist/types/components/table/filters/SelectFilterSection.d.ts +9 -0
  60. package/dist/types/components/table/filters/TableFiltersMenu.d.ts +8 -0
  61. package/dist/types/components/table/filters/applyFiltersToColumns.d.ts +3 -0
  62. package/dist/types/components/table/filters/filterFns.d.ts +3 -0
  63. package/dist/types/components/table/generateColumns.d.ts +2 -0
  64. package/dist/types/components/table/index.d.ts +3 -2
  65. package/dist/types/components/table/tableBarComponents/TableActionsButton.d.ts +9 -0
  66. package/dist/types/components/table/tableBarComponents/TableColumnVisibilityButton.d.ts +7 -0
  67. package/dist/types/components/table/tableBarComponents/TableInfoText.d.ts +7 -0
  68. package/dist/types/components/table/tableBarComponents/TableSearch.d.ts +7 -0
  69. package/dist/types/components/table/tableComponents/SortableHeader.d.ts +7 -0
  70. package/dist/types/components/table/tableComponents/TableCheckbox.d.ts +7 -0
  71. package/dist/types/components/table/tableComponents/TableHeaders.d.ts +7 -0
  72. package/dist/types/components/table/tableComponents/TableRows.d.ts +8 -0
  73. package/package.json +3 -2
  74. package/dist/components/table/GroupActionDialog.js +0 -8
  75. package/dist/components/table/GroupActionDialog.js.map +0 -1
  76. package/dist/components/table/SortableHeader.js +0 -7
  77. package/dist/components/table/SortableHeader.js.map +0 -1
  78. package/dist/types/components/table/GroupActionDialog.d.ts +0 -11
  79. package/dist/types/components/table/SortableHeader.d.ts +0 -4
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getCoreRowModel, getFilteredRowModel, getSortedRowModel, useReactTable, } from '@tanstack/react-table';
3
+ import { useState } from 'react';
4
+ import { Table } from '../ui';
5
+ import { checkboxColumn } from './columnDefs/selectColumn';
6
+ import { actionColumn } from './columnDefs/actionColumn';
7
+ import { TableSearch } from './tableBarComponents/TableSearch';
8
+ import { TableActionsButton } from './tableBarComponents/TableActionsButton';
9
+ import { TableInfoText } from './tableBarComponents/TableInfoText';
10
+ import { TableHeaders } from './tableComponents/TableHeaders';
11
+ import { TableRows } from './tableComponents/TableRows';
12
+ import { TableColumnVisibilityButton } from './tableBarComponents/TableColumnVisibilityButton';
13
+ import { generateColumns } from './generateColumns';
14
+ import { TableFiltersMenu } from './filters/TableFiltersMenu';
15
+ import { ActiveTableFiltersBar } from './filters/ActiveTableFiltersBar';
16
+ import { applyFiltersToColumns } from './filters/applyFiltersToColumns';
17
+ export function PromptTable({ data, actions, columns, filters, onRowClick, }) {
18
+ const [sorting, setSorting] = useState([]);
19
+ const [search, setSearch] = useState('');
20
+ const [rowSelection, setRowSelection] = useState({});
21
+ const baseColumns = columns ?? generateColumns(data);
22
+ const columnsWithFilterFns = applyFiltersToColumns(baseColumns, filters);
23
+ const cols = [
24
+ checkboxColumn(),
25
+ ...columnsWithFilterFns,
26
+ ...(actions ? [actionColumn(actions)] : []),
27
+ ];
28
+ const table = useReactTable({
29
+ data: data,
30
+ columns: cols,
31
+ state: {
32
+ sorting,
33
+ globalFilter: search,
34
+ rowSelection,
35
+ },
36
+ onSortingChange: setSorting,
37
+ onGlobalFilterChange: setSearch,
38
+ onRowSelectionChange: setRowSelection,
39
+ enableRowSelection: true,
40
+ getRowId: (row) => row.id,
41
+ getCoreRowModel: getCoreRowModel(),
42
+ getFilteredRowModel: getFilteredRowModel(),
43
+ getSortedRowModel: getSortedRowModel(),
44
+ });
45
+ return (_jsxs("div", { className: 'flex flex-col gap-3 w-full', children: [_jsxs("div", { className: 'flex items-center justify-between gap-3 flex-wrap', children: [_jsx(TableSearch, { value: search, onChange: (e) => setSearch(e.target.value) }), filters && _jsx(TableFiltersMenu, { table: table, filters: filters }), _jsx(TableColumnVisibilityButton, { table: table }), actions && _jsx(TableActionsButton, { table: table, actions: actions })] }), _jsx(ActiveTableFiltersBar, { table: table, filters: filters }), _jsx(TableInfoText, { table: table }), _jsx("div", { className: 'rounded-md border overflow-x-auto w-full', children: _jsxs(Table, { className: 'table-auto w-full relative', children: [_jsx(TableHeaders, { table: table }), _jsx(TableRows, { table: table, onRowClick: onRowClick })] }) })] }));
46
+ }
47
+ //# sourceMappingURL=PromptTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptTable.js","sourceRoot":"","sources":["../../../src/components/table/PromptTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=TableTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableTypes.js","sourceRoot":"","sources":["../../../src/components/table/TableTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../../components/ui';
3
+ export function ActionDialog({ action, selectedRows, onClose, onConfirm, }) {
4
+ const description = typeof action?.confirm?.description === 'function'
5
+ ? action.confirm.description(selectedRows.length)
6
+ : (action?.confirm?.description ?? '');
7
+ return (_jsx(Dialog, { open: true, onOpenChange: onClose, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: action.confirm?.title }), _jsx(DialogDescription, { children: description })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: 'outline', onClick: onClose, children: "Cancel" }), _jsx(Button, { variant: action.confirm?.variant ?? 'default', onClick: async () => {
8
+ await onConfirm();
9
+ }, children: action.confirm?.confirmLabel ?? 'Confirm' })] })] }) }));
10
+ }
11
+ //# sourceMappingURL=ActionDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionDialog.js","sourceRoot":"","sources":["../../../../src/components/table/actions/ActionDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAWxB,MAAM,UAAU,YAAY,CAAmB,EAC7C,MAAM,EACN,YAAY,EACZ,OAAO,EACP,SAAS,GACY;IACrB,MAAM,WAAW,GACf,OAAO,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,UAAU;QAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,QAAC,YAAY,EAAE,OAAO,YAChC,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,MAAM,CAAC,OAAO,EAAE,KAAK,GAAe,EAClD,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EAEf,MAAC,YAAY,eACX,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,uBAEjC,EACT,KAAC,MAAM,IACL,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,SAAS,EAC7C,OAAO,EAAE,KAAK,IAAI,EAAE;gCAClB,MAAM,SAAS,EAAE,CAAA;4BACnB,CAAC,YAEA,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,SAAS,GACnC,IACI,IACD,GACT,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuTrigger, } from '../../../components/ui';
4
+ import { ActionDialog } from './ActionDialog';
5
+ import { DropdownMenuItemForRowAction } from './DropdownMenuItemForRowAction';
6
+ import { Loader2 } from 'lucide-react';
7
+ export function ActionsMenu({ selectedRows, triggerComponent, actions, onFinish, }) {
8
+ const [menuOpen, setMenuOpen] = useState(false);
9
+ const [openActionConfirmation, setOpenActionConfirmation] = useState(null);
10
+ const [isExecuting, setIsExecuting] = useState(false);
11
+ const closeMenu = () => {
12
+ setMenuOpen(false);
13
+ onFinish?.();
14
+ };
15
+ const executeAction = async (action) => {
16
+ const rowsToAffect = [...selectedRows];
17
+ try {
18
+ setIsExecuting(true);
19
+ await action.onAction(rowsToAffect);
20
+ }
21
+ finally {
22
+ setIsExecuting(false);
23
+ closeMenu();
24
+ }
25
+ };
26
+ const clickMenuItem = async (action) => {
27
+ if (action.confirm) {
28
+ setOpenActionConfirmation(action);
29
+ return;
30
+ }
31
+ await executeAction(action);
32
+ };
33
+ const clickDialogConfirm = async () => {
34
+ if (!openActionConfirmation)
35
+ return;
36
+ const action = openActionConfirmation;
37
+ setOpenActionConfirmation(null);
38
+ await executeAction(action);
39
+ };
40
+ return (_jsxs(_Fragment, { children: [_jsxs(DropdownMenu, { open: menuOpen && !isExecuting, onOpenChange: (open) => {
41
+ if (!isExecuting) {
42
+ setMenuOpen(open);
43
+ }
44
+ }, children: [_jsx(DropdownMenuTrigger, { asChild: true, disabled: isExecuting, children: _jsx("div", { className: 'relative inline-flex items-center', children: isExecuting ? _jsx(Loader2, { className: 'h-4 w-4 animate-spin' }) : triggerComponent }) }), _jsxs(DropdownMenuContent, { align: 'end', className: 'w-48', children: [_jsx(DropdownMenuLabel, { children: "Actions" }), actions.map((action) => (_jsx(DropdownMenuItemForRowAction, { action: action, rows: selectedRows, onTrigger: clickMenuItem }, action.label)))] })] }), openActionConfirmation != null && (_jsx(ActionDialog, { action: openActionConfirmation, selectedRows: selectedRows, onConfirm: clickDialogConfirm, onClose: () => setOpenActionConfirmation(null) }))] }));
45
+ }
46
+ //# sourceMappingURL=ActionsMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionsMenu.js","sourceRoot":"","sources":["../../../../src/components/table/actions/ActionsMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DropdownMenuItem } from '../../../components/ui';
3
+ export function DropdownMenuItemForRowAction({ action, rows, onTrigger, }) {
4
+ const isHidden = action.hide?.(rows) ?? false;
5
+ const isDisabled = action.disabled?.(rows) ?? false;
6
+ if (isHidden)
7
+ return null;
8
+ return (_jsxs(DropdownMenuItem, { disabled: isDisabled, onSelect: (event) => {
9
+ event.preventDefault();
10
+ if (!isDisabled) {
11
+ onTrigger(action);
12
+ }
13
+ }, children: [_jsx("div", { className: 'mr-2', children: action.icon }), action.label] }));
14
+ }
15
+ //# sourceMappingURL=DropdownMenuItemForRowAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownMenuItemForRowAction.js","sourceRoot":"","sources":["../../../../src/components/table/actions/DropdownMenuItemForRowAction.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AASlD,MAAM,UAAU,4BAA4B,CAAsB,EAChE,MAAM,EACN,IAAI,EACJ,SAAS,GAC+B;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;IAEnD,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAA;IAEzB,OAAO,CACL,MAAC,gBAAgB,IACf,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YAClB,KAAK,CAAC,cAAc,EAAE,CAAA;YACtB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS,CAAC,MAAM,CAAC,CAAA;YACnB,CAAC;QACH,CAAC,aAED,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,CAAC,IAAI,GAAO,EACxC,MAAM,CAAC,KAAK,IACI,CACpB,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ActionsMenu } from '../actions/ActionsMenu';
3
+ import { MoreHorizontal } from 'lucide-react';
4
+ export const actionColumn = (actions) => ({
5
+ id: 'rowActions',
6
+ header: '',
7
+ enableSorting: false,
8
+ enableHiding: false,
9
+ cell: ({ row }) => (_jsx("div", { onClick: (e) => e.stopPropagation(), className: 'flex justify-end', children: _jsx(ActionsMenu, { actions: actions, selectedRows: [row.original], triggerComponent: _jsx("div", { className: 'h-4 w-4 transform scale-150 rounded-2xl hover:bg-gray-200 transition-all flex items-center justify-center', onClick: (e) => e.stopPropagation(), children: _jsx(MoreHorizontal, { className: 'h-3 w-3' }) }) }) })),
10
+ });
11
+ //# sourceMappingURL=actionColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionColumn.js","sourceRoot":"","sources":["../../../../src/components/table/columnDefs/actionColumn.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAA2B,OAAuB,EAAgB,EAAE,CAAC,CAAC;IAChG,EAAE,EAAE,YAAY;IAChB,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,cAAK,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,SAAS,EAAC,kBAAkB,YACpE,KAAC,WAAW,IACV,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC5B,gBAAgB,EACd,cACE,SAAS,EAAC,2GAA2G,EACrH,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,YAEnC,KAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,GAClC,GAER,GACE,CACP;CACF,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Checkbox } from '../../../components/ui';
3
+ export const checkboxColumn = () => ({
4
+ id: 'select',
5
+ header: ({ table }) => (_jsx("div", { className: 'flex items-center justify-center', children: _jsx(Checkbox, { checked: table.getIsAllRowsSelected(), onCheckedChange: (checked) => {
6
+ table.toggleAllRowsSelected(!!checked);
7
+ }, onClick: (e) => e.stopPropagation() }) })),
8
+ cell: ({ row }) => (_jsx("div", { className: 'flex items-center justify-center', children: _jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (checked) => {
9
+ row.toggleSelected(!!checked);
10
+ }, onClick: (e) => e.stopPropagation() }) })),
11
+ enableSorting: false,
12
+ enableHiding: false,
13
+ });
14
+ //# sourceMappingURL=selectColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectColumn.js","sourceRoot":"","sources":["../../../../src/components/table/columnDefs/selectColumn.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,MAAM,CAAC,MAAM,cAAc,GAAG,GAA2C,EAAE,CAAC,CAAC;IAC3E,EAAE,EAAE,QAAQ;IAEZ,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,QAAQ,IACP,OAAO,EAAE,KAAK,CAAC,oBAAoB,EAAE,EACrC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC3B,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACxC,CAAC,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,GACnC,GACE,CACP;IAED,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CACjB,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,QAAQ,IACP,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,EAC5B,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC3B,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YAC/B,CAAC,EACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,GACnC,GACE,CACP;IAED,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;CACpB,CAAC,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { FilterBadge } from './FilterBadge';
3
+ export function ActiveTableFiltersBar({ table, filters = [] }) {
4
+ const { globalFilter, columnFilters } = table.getState();
5
+ if (!globalFilter && columnFilters.length === 0) {
6
+ return null;
7
+ }
8
+ const filterMetaById = Object.fromEntries(filters.map((f) => [f.id, f]));
9
+ return (_jsxs("div", { className: 'flex flex-wrap items-center gap-2', children: [typeof globalFilter === 'string' && globalFilter.length > 0 && (_jsx(FilterBadge, { label: `Search: "${globalFilter}"`, onRemove: () => table.setGlobalFilter('') })), columnFilters.map((filter) => {
10
+ const meta = filterMetaById[filter.id];
11
+ const column = table.getColumn(filter.id);
12
+ if (!meta || !column)
13
+ return null;
14
+ const headerLabel = meta.label ??
15
+ (typeof column.columnDef.header === 'string' ? column.columnDef.header : filter.id);
16
+ if (meta.type === 'select') {
17
+ if (!Array.isArray(filter.value))
18
+ return null;
19
+ const values = filter.value;
20
+ return values.map((value) => (_jsx(FilterBadge, { label: `${headerLabel}: ${meta.getDisplay?.(value) ?? value}`, onRemove: () => {
21
+ const next = values.filter((v) => v !== value);
22
+ column.setFilterValue(next.length > 0 ? next : undefined);
23
+ } }, `${filter.id}-${value}`)));
24
+ }
25
+ if (meta.type === 'numericRange') {
26
+ if (typeof filter.value !== 'object' || filter.value === null) {
27
+ return null;
28
+ }
29
+ const value = filter.value;
30
+ let text = '';
31
+ if (value.noScore)
32
+ text = meta.noValueLabel ?? 'No value';
33
+ else if (value.min && value.max)
34
+ text = `${value.min}–${value.max}`;
35
+ else if (value.min)
36
+ text = `≥ ${value.min}`;
37
+ else if (value.max)
38
+ text = `≤ ${value.max}`;
39
+ if (!text)
40
+ return null;
41
+ return (_jsx(FilterBadge, { label: `${headerLabel}: ${text}`, onRemove: () => column.setFilterValue(undefined) }, filter.id));
42
+ }
43
+ return null;
44
+ })] }));
45
+ }
46
+ //# sourceMappingURL=ActiveTableFiltersBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActiveTableFiltersBar.js","sourceRoot":"","sources":["../../../../src/components/table/filters/ActiveTableFiltersBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { X } from 'lucide-react';
3
+ import { cn } from '../../../lib/utils';
4
+ export function FilterBadge({ label, onRemove }) {
5
+ return (_jsxs("span", { className: cn('inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-sm', 'bg-muted text-muted-foreground'), children: [label, _jsx("button", { onClick: onRemove, className: 'rounded-sm p-0.5 hover:bg-muted-foreground/20', children: _jsx(X, { className: 'h-3 w-3' }) })] }));
6
+ }
7
+ //# sourceMappingURL=FilterBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBadge.js","sourceRoot":"","sources":["../../../../src/components/table/filters/FilterBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAChC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAA2C;IACtF,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,sEAAsE,EACtE,gCAAgC,CACjC,aAEA,KAAK,EACN,iBAAQ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,+CAA+C,YAClF,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,GAAG,GAClB,IACJ,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator, Input, } from '../../../components/ui';
3
+ export function NumericRangeFilterSection({ label, column, noValueLabel, }) {
4
+ const value = column.getFilterValue() ?? {};
5
+ const setValue = (updates) => {
6
+ const next = {
7
+ ...value,
8
+ ...updates,
9
+ };
10
+ if (updates.noScore === true) {
11
+ next.min = '';
12
+ next.max = '';
13
+ }
14
+ if ('min' in updates || 'max' in updates) {
15
+ next.noScore = false;
16
+ }
17
+ const isEmpty = !next.min && !next.max && !next.noScore;
18
+ column.setFilterValue(isEmpty ? undefined : next);
19
+ };
20
+ return (_jsxs(_Fragment, { children: [_jsx(DropdownMenuLabel, { children: label }), _jsx(DropdownMenuSeparator, {}), _jsxs("div", { className: 'p-2 space-y-2', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx(Input, { type: 'number', placeholder: 'Min', value: value.min ?? '', onChange: (e) => setValue({ min: e.target.value }), className: 'w-full' }), _jsx(Input, { type: 'number', placeholder: 'Max', value: value.max ?? '', onChange: (e) => setValue({ max: e.target.value }), className: 'w-full' })] }), _jsx(DropdownMenuCheckboxItem, { checked: value.noScore ?? false, onClick: (e) => {
21
+ e.preventDefault();
22
+ setValue({ noScore: !value.noScore });
23
+ }, children: noValueLabel ?? 'No value' })] })] }));
24
+ }
25
+ //# sourceMappingURL=NumericRangeFilterSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumericRangeFilterSection.js","sourceRoot":"","sources":["../../../../src/components/table/filters/NumericRangeFilterSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,GACN,MAAM,iBAAiB,CAAA;AASxB,MAAM,UAAU,yBAAyB,CAAC,EACxC,KAAK,EACL,MAAM,EACN,YAAY,GACmB;IAC/B,MAAM,KAAK,GACR,MAAM,CAAC,cAAc,EAIpB,IAAI,EAAE,CAAA;IAEV,MAAM,QAAQ,GAAG,CACf,OAIE,EACF,EAAE;QACF,MAAM,IAAI,GAAG;YACX,GAAG,KAAK;YACR,GAAG,OAAO;SACX,CAAA;QAED,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;YACb,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACf,CAAC;QAED,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;QACvD,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,OAAO,CACL,8BACE,KAAC,iBAAiB,cAAE,KAAK,GAAqB,EAC9C,KAAC,qBAAqB,KAAG,EAEzB,eAAK,SAAS,EAAC,eAAe,aAC5B,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,KAAK,IACJ,IAAI,EAAC,QAAQ,EACb,WAAW,EAAC,KAAK,EACjB,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAClD,SAAS,EAAC,QAAQ,GAClB,EACF,KAAC,KAAK,IACJ,IAAI,EAAC,QAAQ,EACb,WAAW,EAAC,KAAK,EACjB,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAClD,SAAS,EAAC,QAAQ,GAClB,IACE,EAEN,KAAC,wBAAwB,IACvB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,KAAK,EAC/B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4BACb,CAAC,CAAC,cAAc,EAAE,CAAA;4BAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;wBACvC,CAAC,YAEA,YAAY,IAAI,UAAU,GACF,IACvB,IACL,CACJ,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator } from '../../../components/ui';
3
+ export function SelectFilterSection({ label, column, options, getDisplay, }) {
4
+ const current = column.getFilterValue() ?? [];
5
+ return (_jsxs("div", { children: [_jsx(DropdownMenuLabel, { children: label }), _jsx(DropdownMenuSeparator, {}), options.map((value) => {
6
+ const selected = current.includes(value);
7
+ return (_jsx(DropdownMenuCheckboxItem, { checked: selected, onSelect: (e) => {
8
+ e.preventDefault();
9
+ column.setFilterValue(selected ? current.filter((v) => v !== value) : [...current, value]);
10
+ }, children: getDisplay?.(value) ?? value }, value));
11
+ })] }));
12
+ }
13
+ //# sourceMappingURL=SelectFilterSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectFilterSection.js","sourceRoot":"","sources":["../../../../src/components/table/filters/SelectFilterSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAUpG,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,MAAM,EACN,OAAO,EACP,UAAU,GACe;IACzB,MAAM,OAAO,GAAI,MAAM,CAAC,cAAc,EAAe,IAAI,EAAE,CAAA;IAE3D,OAAO,CACL,0BACE,KAAC,iBAAiB,cAAE,KAAK,GAAqB,EAC9C,KAAC,qBAAqB,KAAG,EAExB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAExC,OAAO,CACL,KAAC,wBAAwB,IAEvB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;wBACd,CAAC,CAAC,cAAc,EAAE,CAAA;wBAClB,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CACpE,CAAA;oBACH,CAAC,YAEA,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IATxB,KAAK,CAUe,CAC5B,CAAA;YACH,CAAC,CAAC,IACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, Button } from '../../../components/ui';
3
+ import { SelectFilterSection } from './SelectFilterSection';
4
+ import { NumericRangeFilterSection } from './NumericRangeFilterSection';
5
+ import { Filter } from 'lucide-react';
6
+ export function TableFiltersMenu({ table, filters }) {
7
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', className: 'justify-start', children: [_jsx(Filter, { className: 'mr-2 h-4 w-4' }), "Filter"] }) }), _jsx(DropdownMenuContent, { className: 'w-64', children: filters.map((filter) => {
8
+ const column = table.getColumn(filter.id);
9
+ if (!column)
10
+ return null;
11
+ if (filter.type === 'select') {
12
+ return (_jsx(SelectFilterSection, { label: filter.label, column: column, options: filter.options, getDisplay: filter.getDisplay }, filter.id));
13
+ }
14
+ if (filter.type === 'numericRange') {
15
+ return (_jsx(NumericRangeFilterSection, { label: filter.label, column: column, noValueLabel: filter.noValueLabel }, filter.id));
16
+ }
17
+ return _jsx("div", { children: filter.render({ column, table }) }, filter.id);
18
+ }) })] }));
19
+ }
20
+ //# sourceMappingURL=TableFiltersMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableFiltersMenu.js","sourceRoot":"","sources":["../../../../src/components/table/filters/TableFiltersMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAOrC,MAAM,UAAU,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAyB;IACxE,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,eAAe,aACjD,KAAC,MAAM,IAAC,SAAS,EAAC,cAAc,GAAG,cAE5B,GACW,EAEtB,KAAC,mBAAmB,IAAC,SAAS,EAAC,MAAM,YAClC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACtB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;oBACzC,IAAI,CAAC,MAAM;wBAAE,OAAO,IAAI,CAAA;oBAExB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,OAAO,CACL,KAAC,mBAAmB,IAElB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,UAAU,EAAE,MAAM,CAAC,UAAU,IAJxB,MAAM,CAAC,EAAE,CAKd,CACH,CAAA;oBACH,CAAC;oBAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACnC,OAAO,CACL,KAAC,yBAAyB,IAExB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,CAAC,YAAY,IAH5B,MAAM,CAAC,EAAE,CAId,CACH,CAAA;oBACH,CAAC;oBAED,OAAO,wBAAsB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAA5C,MAAM,CAAC,EAAE,CAA0C,CAAA;gBACtE,CAAC,CAAC,GACkB,IACT,CAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { multiSelectFilter, numericRangeFilter } from './filterFns';
2
+ function isAccessorKeyColumn(column) {
3
+ return 'accessorKey' in column;
4
+ }
5
+ export function applyFiltersToColumns(columns, filters) {
6
+ if (!filters?.length)
7
+ return columns;
8
+ return columns.map((column) => {
9
+ if (!isAccessorKeyColumn(column))
10
+ return column;
11
+ const filter = filters.find((f) => f.id === column.accessorKey);
12
+ if (!filter)
13
+ return column;
14
+ if (filter.type === 'select') {
15
+ return { ...column, filterFn: multiSelectFilter };
16
+ }
17
+ if (filter.type === 'numericRange') {
18
+ return { ...column, filterFn: numericRangeFilter };
19
+ }
20
+ return column;
21
+ });
22
+ }
23
+ //# sourceMappingURL=applyFiltersToColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyFiltersToColumns.js","sourceRoot":"","sources":["../../../../src/components/table/filters/applyFiltersToColumns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEnE,SAAS,mBAAmB,CAC1B,MAAoB;IAEpB,OAAO,aAAa,IAAI,MAAM,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAuB,EACvB,OAAuB;IAEvB,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,OAAO,CAAA;IAEpC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAA;QAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,CAAA;QAC/D,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAA;QAE1B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;QACnD,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACnC,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;QACpD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export const multiSelectFilter = (row, columnId, filterValue) => {
2
+ if (!Array.isArray(filterValue) || filterValue.length === 0) {
3
+ return true;
4
+ }
5
+ const rowValue = row.getValue(columnId);
6
+ return filterValue.includes(rowValue);
7
+ };
8
+ export const numericRangeFilter = (row, columnId, filterValue) => {
9
+ const rowValue = row.getValue(columnId);
10
+ if (filterValue?.noScore) {
11
+ return rowValue == null;
12
+ }
13
+ if (rowValue == null)
14
+ return false;
15
+ const min = filterValue?.min ? Number(filterValue.min) : undefined;
16
+ const max = filterValue?.max ? Number(filterValue.max) : undefined;
17
+ if (min !== undefined && isNaN(min))
18
+ return false;
19
+ if (max !== undefined && isNaN(max))
20
+ return false;
21
+ if (min !== undefined && rowValue < min)
22
+ return false;
23
+ if (max !== undefined && rowValue > max)
24
+ return false;
25
+ return true;
26
+ };
27
+ //# sourceMappingURL=filterFns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterFns.js","sourceRoot":"","sources":["../../../../src/components/table/filters/filterFns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAqB,EAAE,EAAE;IACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAS,QAAQ,CAAC,CAAA;IAC/C,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAkB,CAC/C,GAAG,EACH,QAAQ,EACR,WAIC,EACD,EAAE;IACF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAA4B,QAAQ,CAAC,CAAA;IAElE,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,OAAO,QAAQ,IAAI,IAAI,CAAA;IACzB,CAAC;IAED,IAAI,QAAQ,IAAI,IAAI;QAAE,OAAO,KAAK,CAAA;IAElC,MAAM,GAAG,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,MAAM,GAAG,GAAG,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAElE,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAEjD,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,KAAK,CAAA;IACrD,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,KAAK,CAAA;IAErD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ function humanize(key) {
2
+ return key
3
+ .replace(/([A-Z])/g, ' $1')
4
+ .trim()
5
+ .replace(/^./, (c) => c.toUpperCase());
6
+ }
7
+ export function generateColumns(data) {
8
+ if (!data.length)
9
+ return [];
10
+ return Object.keys(data[0]).map((key) => ({
11
+ accessorKey: key,
12
+ header: humanize(key),
13
+ cell: (info) => {
14
+ const value = info.getValue();
15
+ return typeof value === 'object' ? JSON.stringify(value) : String(value);
16
+ },
17
+ }));
18
+ }
19
+ //# sourceMappingURL=generateColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateColumns.js","sourceRoot":"","sources":["../../../src/components/table/generateColumns.ts"],"names":[],"mappings":"AAEA,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG;SACP,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,IAAI,EAAE;SACN,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAmB,IAAS;IACzD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAE3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,WAAW,EAAE,GAAG;QAChB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;QACrB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC1E,CAAC;KACF,CAAC,CAAC,CAAA;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
- export * from './SortableHeader';
2
- export * from './GroupActionDialog';
1
+ export * from './tableComponents/SortableHeader';
2
+ export * from './PromptTable';
3
+ export * from './TableTypes';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '../../../components/ui';
3
+ import { MoreHorizontal } from 'lucide-react';
4
+ import { ActionsMenu } from '../actions/ActionsMenu';
5
+ export function TableActionsButton({ actions, table, }) {
6
+ const selectedRows = table.getSelectedRowModel().rows.map((row) => row.original);
7
+ const selectedCount = selectedRows.length;
8
+ return (_jsx(ActionsMenu, { actions: actions, selectedRows: selectedRows, triggerComponent: _jsxs(Button, { disabled: selectedCount == 0, children: [_jsx(MoreHorizontal, { className: 'h-4 w-4' }), "Actions"] }) }));
9
+ }
10
+ //# sourceMappingURL=TableActionsButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableActionsButton.js","sourceRoot":"","sources":["../../../../src/components/table/tableBarComponents/TableActionsButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAQpD,MAAM,UAAU,kBAAkB,CAAuB,EACvD,OAAO,EACP,KAAK,GAC0B;IAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChF,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAA;IACzC,OAAO,CACL,KAAC,WAAW,IACV,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EACd,MAAC,MAAM,IAAC,QAAQ,EAAE,aAAa,IAAI,CAAC,aAClC,KAAC,cAAc,IAAC,SAAS,EAAC,SAAS,GAAG,eAE/B,GAEX,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Columns } from 'lucide-react';
3
+ import { Button, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, } from '../../../components/ui';
4
+ export function TableColumnVisibilityButton({ table, }) {
5
+ const columns = table.getAllColumns();
6
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', children: [_jsx(Columns, { className: 'mr-2 h-4 w-4' }), "Columns"] }) }), _jsx(DropdownMenuContent, { align: 'end', children: columns
7
+ .filter((column) => column.getCanHide())
8
+ .map((column) => {
9
+ return (_jsx(DropdownMenuCheckboxItem, { className: 'capitalize', checked: column.getIsVisible(), onClick: (e) => {
10
+ e.preventDefault();
11
+ column.toggleVisibility(!column.getIsVisible());
12
+ }, children: column.id.replace(/_/g, ' ') }, column.id));
13
+ }) })] }));
14
+ }
15
+ //# sourceMappingURL=TableColumnVisibilityButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableColumnVisibilityButton.js","sourceRoot":"","sources":["../../../../src/components/table/tableBarComponents/TableColumnVisibilityButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EACL,MAAM,EACN,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAMxB,MAAM,UAAU,2BAA2B,CAAsB,EAC/D,KAAK,GACkC;IACvC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;IACrC,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IAAC,OAAO,EAAC,SAAS,aACvB,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,eAE7B,GACW,EACtB,KAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,YAC7B,OAAO;qBACL,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;qBACvC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACd,OAAO,CACL,KAAC,wBAAwB,IAEvB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,EAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;4BACb,CAAC,CAAC,cAAc,EAAE,CAAA;4BAClB,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAA;wBACjD,CAAC,YAEA,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IARxB,MAAM,CAAC,EAAE,CASW,CAC5B,CAAA;gBACH,CAAC,CAAC,GACgB,IACT,CAChB,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function TableInfoText({ table }) {
3
+ const selectedCount = table.getSelectedRowModel().rows.length;
4
+ return (_jsxs("div", { className: 'flex gap-2 text-sm text-muted-foreground', children: [selectedCount > 0 && _jsxs("span", { className: 'text-foreground', children: [selectedCount, " selected"] }), _jsxs("span", { children: ["Showing ", table.getFilteredRowModel().rows.length, " of", ' ', table.getPrePaginationRowModel().rows.length, " Rows"] })] }));
5
+ }
6
+ //# sourceMappingURL=TableInfoText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableInfoText.js","sourceRoot":"","sources":["../../../../src/components/table/tableBarComponents/TableInfoText.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,aAAa,CAAQ,EAAE,KAAK,EAA6B;IACvE,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA;IAE7D,OAAO,CACL,eAAK,SAAS,EAAC,0CAA0C,aACtD,aAAa,GAAG,CAAC,IAAI,gBAAM,SAAS,EAAC,iBAAiB,aAAE,aAAa,iBAAiB,EACvF,uCACW,KAAK,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,MAAM,SAAK,GAAG,EACvD,KAAK,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,MAAM,aACxC,IACH,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Input } from '../../../components/ui';
3
+ import { SearchIcon } from 'lucide-react';
4
+ export function TableSearch({ value, onChange }) {
5
+ return (_jsxs("div", { className: 'relative flex-1 min-w-0 overflow-hidden', children: [_jsx(Input, { placeholder: 'Search ...', value: value, onChange: onChange, className: 'pl-10 w-full min-w-0' }), _jsx(SearchIcon, { className: 'absolute left-3 top-1/2 -translate-y-1/2 h-5 w-5 text-gray-500' })] }));
6
+ }
7
+ //# sourceMappingURL=TableSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableSearch.js","sourceRoot":"","sources":["../../../../src/components/table/tableBarComponents/TableSearch.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAQzC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC/D,OAAO,CACL,eAAK,SAAS,EAAC,yCAAyC,aACtD,KAAC,KAAK,IACJ,WAAW,EAAC,YAAY,EACxB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,sBAAsB,GAChC,EACF,KAAC,UAAU,IAAC,SAAS,EAAC,gEAAgE,GAAG,IACrF,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';
3
+ import { Button } from '../../../components/ui/button';
4
+ export function SortableHeader({ column, title }) {
5
+ return (_jsxs(Button, { variant: 'ghost', onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), className: 'flex items-center pl-0', children: [title, column.getIsSorted() === 'asc' ? (_jsx(ArrowUp, { className: 'ml-2 h-4 w-4' })) : column.getIsSorted() === 'desc' ? (_jsx(ArrowDown, { className: 'ml-2 h-4 w-4' })) : (_jsx(ArrowUpDown, { className: 'ml-2 h-4 w-4 text-muted-foreground' }))] }));
6
+ }
7
+ //# sourceMappingURL=SortableHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SortableHeader.js","sourceRoot":"","sources":["../../../../src/components/table/tableComponents/SortableHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAO/C,MAAM,UAAU,cAAc,CAAQ,EAAE,MAAM,EAAE,KAAK,EAA8B;IACjF,OAAO,CACL,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,EACnE,SAAS,EAAC,wBAAwB,aAEjC,KAAK,EACL,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,CACrC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CACpC,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,CACvC,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,SAAS,EAAC,oCAAoC,GAAG,CAC/D,IACM,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Checkbox } from '../../ui';
3
+ export const TableCheckbox = ({ checked, onToggle, location }) => {
4
+ return (_jsx("div", { className: 'h-full flex flex-col items-center', children: _jsx(Checkbox, { checked: checked, onCheckedChange: onToggle, "aria-label": location == 'row' ? 'Select row' : 'Select all', onClick: (e) => e.stopPropagation(), onFocus: (e) => e.stopPropagation() }) }));
5
+ };
6
+ //# sourceMappingURL=TableCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableCheckbox.js","sourceRoot":"","sources":["../../../../src/components/table/tableComponents/TableCheckbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAQnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAsB,EAAE,EAAE;IACnF,OAAO,CACL,cAAK,SAAS,EAAC,mCAAmC,YAChD,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,QAAQ,gBACb,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAC3D,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,GACnC,GACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { flexRender } from '@tanstack/react-table';
3
+ import { TableHead, TableHeader, TableRow } from '../../ui';
4
+ import { SortableHeader } from './SortableHeader';
5
+ export function TableHeaders({ table }) {
6
+ return (_jsx(TableHeader, { className: 'bg-muted/100', children: table.getHeaderGroups().map((headerGroup) => (_jsx(TableRow, { children: headerGroup.headers.map((header) => (_jsx(TableHead, { className: 'whitespace-nowrap', children: renderHeaderCell(header) }, header.id))) }, headerGroup.id))) }));
7
+ }
8
+ function renderHeaderCell(header) {
9
+ if (header.isPlaceholder)
10
+ return null;
11
+ const def = header.column.columnDef.header;
12
+ if (header.column.getCanSort() && typeof def === 'string') {
13
+ return _jsx(SortableHeader, { column: header.column, title: def });
14
+ }
15
+ return flexRender(def, header.getContext());
16
+ }
17
+ //# sourceMappingURL=TableHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHeaders.js","sourceRoot":"","sources":["../../../../src/components/table/tableComponents/TableHeaders.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAoC,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,MAAM,UAAU,YAAY,CAAQ,EAAE,KAAK,EAA4B;IACrE,OAAO,CACL,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,YAClC,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,KAAC,QAAQ,cACN,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAAiB,SAAS,EAAC,mBAAmB,YACrD,gBAAgB,CAAC,MAAM,CAAC,IADX,MAAM,CAAC,EAAE,CAEb,CACb,CAAC,IALW,WAAW,CAAC,EAAE,CAMlB,CACZ,CAAC,GACU,CACf,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAQ,MAA6C;IAC5E,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAA;IAE1C,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAI,CAAA;IAC9D,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { flexRender } from '@tanstack/react-table';
3
+ import { TableBody, TableCell, TableRow } from '../../ui';
4
+ export function TableRows({ table, onRowClick }) {
5
+ const rows = table.getRowModel().rows;
6
+ if (!rows.length) {
7
+ return (_jsx(TableBody, { children: _jsx(TableRow, { children: _jsx(TableCell, { colSpan: table.getAllColumns().length, className: 'h-24 text-center', children: "No results." }) }) }));
8
+ }
9
+ return (_jsx(TableBody, { children: rows.map((row) => (_jsx(TableRow, { "data-state": row.getIsSelected() ? 'selected' : undefined, onClick: () => {
10
+ if (onRowClick) {
11
+ onRowClick(row.original);
12
+ }
13
+ }, className: 'cursor-pointer', children: row.getVisibleCells().map((cell) => (_jsx(TableCell, { className: 'whitespace-nowrap cursor-pointer', children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))) }, row.id))) }));
14
+ }
15
+ //# sourceMappingURL=TableRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRows.js","sourceRoot":"","sources":["../../../../src/components/table/tableComponents/TableRows.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAOzD,MAAM,UAAU,SAAS,CAAQ,EAAE,KAAK,EAAE,UAAU,EAAyB;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAA;IAErC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CACL,KAAC,SAAS,cACR,KAAC,QAAQ,cACP,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,EAAC,kBAAkB,4BAElE,GACH,GACD,CACb,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,SAAS,cACP,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,KAAC,QAAQ,kBAEK,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,EACD,SAAS,EAAC,gBAAgB,YAEzB,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAAe,SAAS,EAAC,kCAAkC,YAClE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAD5C,IAAI,CAAC,EAAE,CAEX,CACb,CAAC,IAbG,GAAG,CAAC,EAAE,CAcF,CACZ,CAAC,GACQ,CACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from 'react';
2
+ import { TableProps, WithId } from './TableTypes';
3
+ export declare function PromptTable<T extends WithId>({ data, actions, columns, filters, onRowClick, }: TableProps<T>): ReactElement;
@@ -0,0 +1,44 @@
1
+ import { Column, ColumnDef, Table } from '@tanstack/react-table';
2
+ export interface WithId {
3
+ id: string;
4
+ }
5
+ export interface RowAction<Type extends WithId> {
6
+ label: string;
7
+ icon?: React.ReactNode;
8
+ onAction: (rows: Type[]) => void | Promise<void>;
9
+ confirm?: {
10
+ title?: string;
11
+ description: string | ((count: number) => string);
12
+ confirmLabel?: string;
13
+ variant?: 'default' | 'destructive';
14
+ };
15
+ disabled?: (rows: Type[]) => boolean;
16
+ hide?: (rows: Type[]) => boolean;
17
+ }
18
+ export type TableFilter = {
19
+ type: 'select';
20
+ id: string;
21
+ label: string;
22
+ options: string[];
23
+ getDisplay?: (value: string) => React.ReactNode;
24
+ } | {
25
+ type: 'numericRange';
26
+ id: string;
27
+ label: string;
28
+ noValueLabel?: string;
29
+ } | {
30
+ type: 'custom';
31
+ id: string;
32
+ label: string;
33
+ render: (args: {
34
+ column: Column<any, unknown>;
35
+ table: Table<any>;
36
+ }) => React.ReactNode;
37
+ };
38
+ export interface TableProps<Type extends WithId> {
39
+ data: Type[];
40
+ actions?: RowAction<Type>[];
41
+ columns?: ColumnDef<Type>[];
42
+ filters?: TableFilter[];
43
+ onRowClick?: (rowData: Type) => void;
44
+ }
@@ -0,0 +1,10 @@
1
+ import { ReactElement } from 'react';
2
+ import { RowAction, WithId } from '../TableTypes';
3
+ interface ActionDialogProps<T extends WithId> {
4
+ action: RowAction<T>;
5
+ selectedRows: T[];
6
+ onConfirm: () => Promise<void> | void;
7
+ onClose: () => void;
8
+ }
9
+ export declare function ActionDialog<T extends WithId>({ action, selectedRows, onClose, onConfirm, }: ActionDialogProps<T>): ReactElement;
10
+ export {};
@@ -0,0 +1,10 @@
1
+ import { ReactElement } from 'react';
2
+ import { RowAction, WithId } from '../TableTypes';
3
+ interface ActionsMenuProps<Type extends WithId> {
4
+ selectedRows: Type[];
5
+ triggerComponent: React.ReactNode;
6
+ actions: RowAction<Type>[];
7
+ onFinish?: () => void;
8
+ }
9
+ export declare function ActionsMenu<Type extends WithId>({ selectedRows, triggerComponent, actions, onFinish, }: ActionsMenuProps<Type>): ReactElement;
10
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ReactElement } from 'react';
2
+ import { RowAction, WithId } from '../TableTypes';
3
+ interface DropdownMenuItemForRowActionProps<Type extends WithId> {
4
+ action: RowAction<Type>;
5
+ rows: Type[];
6
+ onTrigger: (action: RowAction<Type>) => void;
7
+ }
8
+ export declare function DropdownMenuItemForRowAction<Type extends WithId>({ action, rows, onTrigger, }: DropdownMenuItemForRowActionProps<Type>): ReactElement | null;
9
+ export {};
@@ -0,0 +1,5 @@
1
+ import { ColumnDef } from '@tanstack/react-table';
2
+ import { RowAction } from '../TableTypes';
3
+ export declare const actionColumn: <T extends {
4
+ id: string;
5
+ }>(actions: RowAction<T>[]) => ColumnDef<T>;
@@ -0,0 +1,4 @@
1
+ import { ColumnDef } from '@tanstack/react-table';
2
+ export declare const checkboxColumn: <T extends {
3
+ id: string;
4
+ }>() => ColumnDef<T>;
@@ -0,0 +1,8 @@
1
+ import { TableFilter } from '../TableTypes';
2
+ import { Table } from '@tanstack/react-table';
3
+ interface ActiveTableFiltersBarProps {
4
+ table: Table<any>;
5
+ filters?: TableFilter[];
6
+ }
7
+ export declare function ActiveTableFiltersBar({ table, filters }: ActiveTableFiltersBarProps): import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare function FilterBadge({ label, onRemove }: {
2
+ label: string;
3
+ onRemove: () => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { Column } from '@tanstack/react-table';
2
+ interface NumericRangeFilterSectionProps {
3
+ label: string;
4
+ column: Column<any, unknown>;
5
+ noValueLabel?: string;
6
+ }
7
+ export declare function NumericRangeFilterSection({ label, column, noValueLabel, }: NumericRangeFilterSectionProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Column } from '@tanstack/react-table';
2
+ interface SelectFilterSectionProps {
3
+ label: string;
4
+ column: Column<any, unknown>;
5
+ options: string[];
6
+ getDisplay?: (value: string) => React.ReactNode;
7
+ }
8
+ export declare function SelectFilterSection({ label, column, options, getDisplay, }: SelectFilterSectionProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ import { Table } from '@tanstack/react-table';
2
+ import { TableFilter } from '../TableTypes';
3
+ interface TableFiltersMenuProps {
4
+ table: Table<any>;
5
+ filters: TableFilter[];
6
+ }
7
+ export declare function TableFiltersMenu({ table, filters }: TableFiltersMenuProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,3 @@
1
+ import { ColumnDef } from '@tanstack/react-table';
2
+ import { TableFilter } from '../TableTypes';
3
+ export declare function applyFiltersToColumns<T>(columns: ColumnDef<T>[], filters?: TableFilter[]): ColumnDef<T>[];
@@ -0,0 +1,3 @@
1
+ import { FilterFn } from '@tanstack/react-table';
2
+ export declare const multiSelectFilter: FilterFn<any>;
3
+ export declare const numericRangeFilter: FilterFn<any>;
@@ -0,0 +1,2 @@
1
+ import { ColumnDef } from '@tanstack/react-table';
2
+ export declare function generateColumns<T extends object>(data: T[]): ColumnDef<T>[];
@@ -1,2 +1,3 @@
1
- export * from './SortableHeader';
2
- export * from './GroupActionDialog';
1
+ export * from './tableComponents/SortableHeader';
2
+ export * from './PromptTable';
3
+ export * from './TableTypes';
@@ -0,0 +1,9 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ import { RowAction, WithId } from '../TableTypes';
4
+ interface TableActionsButtonProps<TData extends WithId> {
5
+ actions: RowAction<TData>[];
6
+ table: ReactTable<TData>;
7
+ }
8
+ export declare function TableActionsButton<TData extends WithId>({ actions, table, }: TableActionsButtonProps<TData>): ReactElement;
9
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Table } from '@tanstack/react-table';
2
+ import { WithId } from '../TableTypes';
3
+ interface TableColumnVisibilityButtonProps<Type> {
4
+ table: Table<Type>;
5
+ }
6
+ export declare function TableColumnVisibilityButton<Type extends WithId>({ table, }: TableColumnVisibilityButtonProps<Type>): JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ interface TableInfoTextProps<TData> {
4
+ table: ReactTable<TData>;
5
+ }
6
+ export declare function TableInfoText<TData>({ table }: TableInfoTextProps<TData>): ReactElement;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ReactElement, ChangeEvent } from 'react';
2
+ interface TableSearchProps {
3
+ value: string;
4
+ onChange: (event: ChangeEvent<HTMLInputElement>) => void;
5
+ }
6
+ export declare function TableSearch({ value, onChange }: TableSearchProps): ReactElement;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Column } from '@tanstack/react-table';
2
+ interface SortableHeaderProps<TData> {
3
+ column: Column<TData, unknown>;
4
+ title: string;
5
+ }
6
+ export declare function SortableHeader<TData>({ column, title }: SortableHeaderProps<TData>): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ interface TableCheckboxProps {
2
+ checked: boolean;
3
+ onToggle: (arg0: boolean) => void;
4
+ location: 'row' | 'header';
5
+ }
6
+ export declare const TableCheckbox: ({ checked, onToggle, location }: TableCheckboxProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ interface TableHeadersProps<TData> {
4
+ table: ReactTable<TData>;
5
+ }
6
+ export declare function TableHeaders<TData>({ table }: TableHeadersProps<TData>): ReactElement;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ interface TableRowsProps<TData> {
4
+ table: ReactTable<TData>;
5
+ onRowClick?: (rowData: TData) => void;
6
+ }
7
+ export declare function TableRows<TData>({ table, onRowClick }: TableRowsProps<TData>): ReactElement;
8
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tumaet/prompt-ui-components",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ls1intum/prompt-lib.git"
@@ -50,6 +50,7 @@
50
50
  "@radix-ui/react-toggle": "^1.1.0",
51
51
  "@radix-ui/react-toggle-group": "^1.1.0",
52
52
  "@radix-ui/react-tooltip": "^1.1.4",
53
+ "@tanstack/react-table": "^8.21.3",
53
54
  "@tiptap/core": "^2.11.7",
54
55
  "@tiptap/extension-code-block": "^2.11.7",
55
56
  "@tiptap/extension-code-block-lowlight": "^2.11.7",
@@ -83,7 +84,7 @@
83
84
  "recharts": "^2.15.3",
84
85
  "sonner": "^2.0.3",
85
86
  "tailwind-merge": "^2.5.4",
86
- "tsc-alias": "^1.8.15",
87
+ "tsc-alias": "^1.8.16",
87
88
  "typescript": "^5.7.3"
88
89
  },
89
90
  "devDependencies": {
@@ -1,8 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Button } from '../../components/ui/button';
3
- import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '../../components/ui/dialog';
4
- export const ActionDialog = ({ title, description, confirmLabel, confirmVariant = 'default', isOpen, onClose, onConfirm, }) => (_jsx(Dialog, { open: isOpen, onOpenChange: onClose, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: title }), _jsx(DialogDescription, { children: description })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: 'outline', onClick: onClose, children: "Cancel" }), _jsx(Button, { variant: confirmVariant, onClick: () => {
5
- onConfirm();
6
- onClose();
7
- }, children: confirmLabel })] })] }) }));
8
- //# sourceMappingURL=GroupActionDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupActionDialog.js","sourceRoot":"","sources":["../../../src/components/table/GroupActionDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAA;AAY/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,cAAc,GAAG,SAAS,EAC1B,MAAM,EACN,OAAO,EACP,SAAS,GACS,EAAE,EAAE,CAAC,CACvB,KAAC,MAAM,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,YACzC,MAAC,aAAa,eACZ,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,KAAK,GAAe,EAClC,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EACf,MAAC,YAAY,eACX,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,uBAEjC,EACT,KAAC,MAAM,IACL,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,GAAG,EAAE;4BACZ,SAAS,EAAE,CAAA;4BACX,OAAO,EAAE,CAAA;wBACX,CAAC,YAEA,YAAY,GACN,IACI,IACD,GACT,CACV,CAAA"}
@@ -1,7 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';
3
- import { Button } from '../../components/ui/button';
4
- export const SortableHeader = ({ column, title }) => {
5
- return (_jsxs(Button, { variant: 'ghost', onClick: () => column.toggleSorting(column.getIsSorted() === 'asc'), children: [title, column.getIsSorted() === 'asc' ? (_jsx(ArrowUp, { className: 'ml-2 h-4 w-4' })) : column.getIsSorted() === 'desc' ? (_jsx(ArrowDown, { className: 'ml-2 h-4 w-4' })) : (_jsx(ArrowUpDown, { className: 'ml-2 h-4 w-4' }))] }));
6
- };
7
- //# sourceMappingURL=SortableHeader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SortableHeader.js","sourceRoot":"","sources":["../../../src/components/table/SortableHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAkC,EAAE,EAAE;IAClF,OAAO,CACL,MAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,aACxF,KAAK,EACL,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAChC,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,CACrC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CACpC,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,CACvC,CAAC,CAAC,CAAC,CACF,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,GAAG,CACzC,IACM,CACV,CAAA;AACH,CAAC,CAAA"}
@@ -1,11 +0,0 @@
1
- interface ActionDialogProps {
2
- title: string;
3
- description: string;
4
- confirmLabel: string;
5
- confirmVariant?: 'default' | 'destructive';
6
- isOpen: boolean;
7
- onClose: () => void;
8
- onConfirm: () => void;
9
- }
10
- export declare const ActionDialog: ({ title, description, confirmLabel, confirmVariant, isOpen, onClose, onConfirm, }: ActionDialogProps) => import("react/jsx-runtime").JSX.Element;
11
- export {};
@@ -1,4 +0,0 @@
1
- export declare const SortableHeader: ({ column, title }: {
2
- column: any;
3
- title: string;
4
- }) => import("react/jsx-runtime").JSX.Element;